remove arity check for `.end()`

.end() would previously take a function with 1 or two arguments. With 1
argument it would return a `response` and with two it would be `error,
response`. This change makes the callback always accept `error,
response`.

Additionally, the `error` event is emitted if there are any error
listeners. This avoid errors crashing the app if there are no listeners.
Merge pull request #519 from visionmedia/remove-end-arity

remove arity check for `.end()`