Huge rewrite

I essentially rearranged a ton of things, and then rewrote some things too.

Major cool things:
- we now pass an event emitter `io` in with the worker context which has awesome powers.
  - `io.emit("stdout"|"stderr", text, [type])` ; this adds the text (rendered by `colorize[type]`) to the proper buffer and sends it up to the user
  - `io.emit('log', arg, ...)` send something to the main strider logger
  - `io.emit('error', errobj, [textstatus])` report that an unexpected exception has occurred. This kills the current job, and sends the following message to the user:

![selection_022](https://f.cloud.github.com/assets/112170/855041/bb7e6512-f515-11e2-8762-4faced248dc1.jpg)

- all errors are caught and properly handled by `domain`s
- a plugin can specify `PATH`s that should be added
- we now have automatic `pty` failover; if the environment doesn't support it, the command is re-run without pty, and further commands are also run without pty
- made a number of tests
- should be 100% backwards-compatible
- added an error message for the case where no plugins matched the project
![selection_023](https://f.cloud.github.com/assets/112170/855073/c0240350-f516-11e2-920b-bbf080cad8c3.jpg)


All of the testing I did went without a hitch, but there's definitely more testing to be done.

Fixes Strider-CD/strider#146
Fixes Strider-CD/strider#135