Use Istanbul as a CoverageCollector

This is a way I try to hook ``Istanbul``. I want to do something like you can switch to different collector and reporter, but I don't know what the reporter should be for the original ``cover``.
As I read through this, I'm recalling now (from looking at Istanul previously) that Istanbul doesn't play very well with building custom output formatters (you basically have to dive into istanbul internals to write a formatted...which didn't feel very upgrade safe should we ever need to upgrade istanbul...)

I'd feel a lot better if coverage data were normalized to a non-implementation-specific format so that coverage output can be customized at the output reporter layer. If we go with Istanbul as our default coverage collector, can we extract coverage info into a more normalized form that's then passed up to the output formatter here?

A bit of context: Jest was pretty carefully designed to be two parts: The CLI and the library. Neither make any assumption about the other, and this makes it easy to build a custom front-end to Jest (even though Jest ships with a default CLI that should hopefully cover most cases).

This is important to us (for example) because Facebook has a custom CLI front-end that lets us format our test output into a fairly structured, custom data protocol that our internal test infrastructure is able to understand. This particular output formatting wouldn't be very useful for anyone else, so we've just taken advantage of this libraryAPI/CLI interface separation and written our own facebook-specific front end to Jest.

In addition to test results, we also customize the output formatting of coverage information so that it can be properly passed up to our test-infrastructure, which has it's own unique JSON protocol format for coverage.