Event reporters and many fixes (fully tested)

### (Now Complete!)

Addresses #27, #26, #23, #17, #16, #13, #7, and #3

I've been working on improving things and adding features that I needed. (With the changes here, I no longer need to use the js api, I can simply use the cli).

### Overview of changes
#### Reworked reporter system
  - Reporters use events now
  - There are many more reporters (cli, dot, nyancat, junit, markdown, and a basic html)
  - Reports have duration times
  - Junit reporter writes asynchronously
  - Errors are aggregated at the bottom (controlled via a flag)

#### Reworked CLI
  - The cli library couldn't do enough, so I switched it to optimist, which allows, among other things, multiple parameters with the same name
  - Can now pass in headers as parameters, with `-h` or `--header`, and can be used multiple times.
  - Similarly, can pass in multiple reporters and multiple output paths (you can use the nyan reporter to view in the console, while also outputting to junit and markdown, for example).
  - Can filter the requests by http method, with -m. E.g. `-m GET -m POST` will only run the GET and POST transactions defined in the blueprint.
  - Can choose to show errors inline with `--inline-errors`
  - Can pass in basic auth credentials with `-u` or `--user` e.g. `--user bob:test`. (This is the convention used by curl)
  - Can control log output with `--timestamp`, `--color`, and `--level`, to enable/disable timestamps, enable/disable color, and set the level of logs to display.
  - Adds back `--version` and `--help`
  - Can choose to display request/response information for passing tests (not just failing) with `--details`

#### Coverage

- Coverage is about where it was when I started, I've made sure to add as many unit tests as seemed reasonable.
- I've added a bunch of integration tests to cover the new command line options.

### Other forks

  - I realized I've been working on an older version of dredd, so I've merged in the current master branch
  - I also merged in @adamrneary's fork with the sorting addition (it wouldn't have merged in cleanly so I went ahead and pulled it in, didn't want to accidentally squash his work).
  - If it would help, I can pull in the rest-reporter branch and update it to work with the event-based reporting system. I wasn't sure what state that branch was in, so I didn't do anything with it.

### Things I want to do which can't be done yet

- The reporters should be aware of groups and other structure from the blueprint. This isn't *easily* done right now because the parsing is separate from the transaction execution. Either this information should be embedded in the transactions, or the transactions should execute as the blueprint is parsing.

- Multiple request/response pairs. This would be easy if the blueprint format supported naming Responses (you can only name Requests right now) - it could simply pair them by name. As it stands, there's no way to tell which response goes with which request.


![](http://f.cl.ly/items/363r250B3p3Y1S1P3I05/Screen%20Shot%202014-01-07%20at%205.39.35%20PM.png)