Add event subscription methods for Editor and associated classes

* [ ] Add event subscription methods
  * [ ] :wrench: Editor
  * [x] Cursor
  * [x] Selection
  * [x] Decoration
  * [x] DisplayBuffer
  * [x] TokenizedBuffer
* [ ] Deprecate `::on`
  * [ ] Editor
  * [x] Cursor
  * [x] Selection
  * [x] Decoration
  * [x] DisplayBuffer
  * [x] TokenizedBuffer
* [ ] Document new methods

### Notes

* We should drop events on editor that can be replaced by methods on `Cursor`, `Selection`, `Decoration`
* Don't forget to dispose emitter instances on destruction of the owner
`Decoration::isDestroyed` should really be a method to blend in with the rest of our strategy. There's one tricky corner, which is that RxJS disposables expose `::isDisposed` as a property, which could cause compatibility issues is we ever adopt RxJS to enhance these methods with observables. I'm thinking we should either just not make that method/property public or just go with a method for consistency and figure it out later.