Support global setup and teardown.

Defines and implements the --setup and --teardown options.

Both options accept the path to a module which must export a function.
The mocha run() function has been modified to invoke the setup() and
teardown() functions. It still returns the Runner instance.

The setup and teardown functions are passed a callback function which
must be invoked, optionally passing an error to the callback.

The use case for this is when testing a server code base and wishing to
generate code coverage it does not make sense to start and stop the
server for every test suite, especially if the server is performing
various operations at startup (reading configuration files, establishing
TCP connections etc.).

A test specification has been added and all existing tests are passing.

This code has also been integrated with a real project and is
functioning as expected.

Typically the teardown() function will want access to some data created in
setup(), no special handling has been given to this scenario, the setup
module can expose data on it's exports and the teardown() function can
require the setup module and access the data (usually a server
instance).

Note that because the typical flow when invoking the callback in
teardown() is to invoke process.exit(), asynchronous calls via console
stdout methods immediately prior to invoking the callback may result in
some data not being sent to stdout.