Update the decoration API

Starting this PR super early. I want to layout what I am thinking before getting into it. 

### Editor / DisplayBuffer

The API is designed to be consistent with the marker API. The marker API has a `markBufferRange` function that returns a `Marker` object. Removal of the marker is done through a `destroy` method. The Decorations API takes on the same form:

* `(Decoration) decorateMarker(marker, decorationParams)`

These remain unchanged:

* `(Decoration) decorationForId(decorationId)`
* `(Object) decorationsForScreenRowRange(startScreenRow, endScreenRow)`

### Decoration

New:

* `(void) destroy()` - this just calls `displayBuffer::removeDecoration(this)`
* `(void) update(newParams)` - update the params with newParams. Lets the `displayBuffer` know there was an update, which will notify the `EditorComponent`.

Unchanged:

* `flash`

### TODO

* [x] `Decoration::destroy()` 
* [x] `Decoration::update()` 
* [x] `DisplayBuffer / Editor::decorateMarker()` 
* [x] Update packages using decorations