Rewrite hub.js and add task dependencies.

@shama, here's the PR for #47.

What this changes:
 * Adds `dependencyFn` option. (Default: no dependencies)
   * See changes to readme for more details.
 * Adds `bufferOutput` option to only print output from a task once it completes. (Default: `false`)
 * Removes `concurrent` option (temporarily--can be re-added once newly opened caolan/async#637 is merged) due to switch from `async.queue` to `async.auto`.

I know it's a lot for one Pull Request. If you'd prefer, I can spend some more time breaking it up, but I figured it might save you time if it were just once batch.

Also, I apologize that there are so many refactorings mixed in. :/ I kinda went crazy, and if you'd like I can undo some of them.

Let me know what you think.