Version callback and exit code fix

I have added a `callback` argument to the `version` method which allows a user to customise the program version output. Signature for the callback is `function(version, name, cmd)`.

In addition, I have patched an issue whereby when invoking subcommands the exit code of the subcommand program was not being proxied by the parent program.

I have not added any test fixtures as there are no asynchronous test cases at the moment and I don't want to refactor all the existing tests at this stage. Although, I have tested the exit code functionality in a program I am writing that depends upon commander.

The patch version has been incremented if you want to merge this and publish to npm.