Make jest easier to use from node instead of CLI

This makes jest much easier to use from node by way of a few changes:

* Declare a main JS file, so you can require('jest-cli').
* Allow an optional callback function to `runCLI` which is called with completionData instead of ending the process.
* Allow for `testPathPattern` to be provided directly instead of via bash args, which allows passing `{testPathPattern: "(my.*custom)|pattern"}` as options to `runCLI`.
* Set a default empty `argv`, to allow for passing null.

After this change, writing a basic grunt task to run your tests is super straightforward:

```
  grunt.registerTask('jest', function() {
    var onCompleteTask = this.async();
    require('jest-cli').runCLI(null, __dirname, function (completionData) {
      onCompleteTask(completionData.numFailedTests === 0);
    });
  });
```
Maybe just make the call to `_main()` inside the `if (require.main === module)` block below do the `process.exit()` if there were failed tests.

If you're requiring this file from another module, it's probably never a good idea to call process.exit() and kill the outer libs