Completed nested command support.

Nested command support was almost completely available, however, a few things
seemed to be missing to me.

* `this` context on `action` event listeners was not bound properly.
* We output `help` too early, the deepest referenced command should handle help.
* We did not have `action` handling logic to delegate to subcommands if they existed.

This should address #226, and #1. Pretty much all of the support was already there, and it seemed useful to just connect the wires. I know that #63 referenced using the git subcommand model, which I love and use frequently, but there are several use cases (creating a command framework that loads external "plugin" module commands into the parent executable) that would be more easily expressed with this simple fix to connect the wires for sub-commands.
I was cribbing from https://github.com/visionmedia/commander.js/blob/master/test/test.options.commands.js#L103. Basically, we hijack process.exit(x) and have it throw an error (which help calls process.exit(0)) https://github.com/visionmedia/commander.js/pull/245/files#diff-48e1e0644a9c6aeb3fee25b9561b1692R60 We are OK with having the program exit (that is what help is supposed to do) but we want to assert that it was actually called (we add a `on('help')` above that sets the variable if help is called.