Fixed issue where error callback would not invoke, including new test cases.

The web/ws handlers allow a callback to be passed in that will be invoked on error. This callback was never being fired. This change fixes this by invoking the callback if present, otherwise emitting the 'error' event.

Included some new test cases to evaluate this state where the web/ws handlers are being used by an existing server. (ie: `listen` is never called on the proxy)