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);
    });
  });
```
What's the issue with just using bash args? It's slightly odd to have two ways to supply path patterns