Refactors dredd to use a config object. Allows cli/package usage.

This commit is all about improving the robustness of the command line utility, and allowing dredd to be used as a node package.

It refactors dredd from a function to an object, which can be configured at runtime. The command line tool has been refactored to configure the dredd object rather than interact with protagonist directly. This allows dredd to be used within other node applications (for more complex initialization, such as performing an auth handshake). It adds several new features to the command line interface, including the ability to specify a reporter, turn on debugging, silence output, and display a nice help.