Prepare to do a complete rewrite

The goal will be changed from "program-assisted manual debugging" to
"human-assisted automatic debugging".
Form the skeleton of the rewrite

Most files are copied/adapted from Istanbul (Rev 1d35a4e9310).
Diffbug borrows two things from Istanbul:
1. The plugin/subcommand architecture.
2. The instrumenter, because we also need to instrument the code
   to gather runtime information.
Make minor changes to ensure we pass jshint
Adapt index.js from Istanbul to provide an API
Copy/Adapt relevant tests from Istanbul
Improve speed by not loading unnecessary modules

This commit tries to load modules only when needed:

1. `register-plugins.js` is removed, each type of plugins are only
   registered when the `index.js` of that type is loaded.
2. In each `command` plugin, modules only needed in its `run()`
   method are loaded in that method, so calling `synopsis()` and
   `usage()` doesn't cause these modules to be loaded.

Note that due to the first change above, now you can't load a plugin
module before the `index.js` of its type is loaded (causes an error
due to circular dependencies). The solution is simply not to directly
load a plugin module. When using a plugin, say `MemoryStore`, don't
use:

```
var MemoryStore = require('./store/memory'),
    store = new MemoryStore();
```

Use this instead:

```
var Store = require('./store'),
    store = Store.create('memory');
```

See [this pull request](https://github.com/gotwarlost/istanbul/pull/88)
for more information.
Use a local copy of jshint.json, where we can change options
Improve speed by not using `abbrev`

By using our own implementation, we improve speed as well as supporting
a new feature: when an abbreviation is ambiguous, we list all matching
commands.
Improve speed by loading plugins lazily

Plugins are loaded when they're used, instead of when their type's
`index.js` is loaded. This makes this plugin architecture scalable:
you can have hundreds of plugins and it wouldn't have a great impact
on performance.
Optimize our "abbrev" implementation

Short-circuit the common case that the abbreviation is an exact match.
Minor improvement on speed of the `help` command

In the `help` command, we need to create an instance of all other
commands to get their synopses. However, we don't have to create
another instance of the `help` command, just use `this` instance.