Rewrite and simplify output handlers.

cc @DorianGray 

If this goes well, will cut RC V1. This also separates "errors" from "failures":

![screen shot 2014-07-10 at 7 45 35 pm](https://cloud.githubusercontent.com/assets/175515/3548054/759a1894-08a5-11e4-8e29-e071a2a105ce.png)

(In this case, the last file contained the contents `error('this spec errored at the file level')`. It will give you, for example, detailed information about bad `requires` and syntax errors and other such problems.)
Base should probably check for nil on the handler functions before subscribing.