feat($q): add shorthand for defining promise success or error handlers

Now we can instead this

    promise.then(null, errorHandler)

like this

    promise.fail(errorhandler)

Closes #2048