The tool I've settled on, at least for now, is
Tracks. I wish that Tracks was hosted somewhere for free, but I'm happy to host it myself. That may be a problem for some of you, though. (Also note that there are some Tracks installations out there to be demoed, but many, if not all, of them are old versions of Tracks. I almost dismissed Tracks because of this.)
Tracks runs as a web application. It allows arbitrary dependencies. It allows you to drag dependent tasks onto the tasks they depend on to assign dependencies, but you can also enter tasks manually into the task description, and it offers autocompleted suggestions based on the beginnings of task descriptions that you type in. It only shows you doable tasks by default.
Honestly, the only things that I would change are that it would be nice to see the ability to also define a task as a being a dependency of another task instead of only marking tasks as being dependent (not that that's much of a hindrance), and an easier and/or better way to see every task than just searching for nothing.
There are also prebuilt packages at
http://bitnami.org/stack/tracks for when you're lazy like me and don't feel like mucking about with its dependencies.
It also has a RESTful API for if and when I want to write a tool to interact with it. (Which I will probably do very soon in order to create a reminder app. I get distracted easily.)
Tracks is pretty much the web app I was looking for when I started all of this, and it took me an awfully long time to find it. I hope that this series of posts will help someone else who has similar requirements to mine.
Now, hopefully, I can get some things done.