Cleaner steps for register, unregister, getRegistration

* Less verbose, no need to refer to resolver.
* Use DOMException, not DOMError.
* It's not ok to reject a promise without arguments, always provide a DOMException.
* Resolve unregister promise with PushRegistration.

For more background details see the Promises Guide:
https://github.com/w3ctag/promises-guide

This fixes issue #4.
The promise can be rejected with either a NotFoundError or an AbortError, so there are two paths. Additionally, the UA has the option to provide details in error.message that cannot be specified in this document, but would still be useful for authors when logged to the console.