Update Types around Facia-Tool updates

This updates the types used by `FaciaToolController` which receives updates from the tool.

It is based off an ADT `FaciaToolUpdate` and the JSON serialization is written using `Variants.Format`.

This gives us better types around the updates, gives clear boundaries about what is what and what goes where and makes future refactoring easier.

More importantly, these types can now be used to pull all the updates off our new `stream`.

The only thing I am a bit dubious about is the `JS`. @stephanfowler 

@robertberry 
edits.type = [
    edits.update ? 'Update' : null,
    edits.remove ? 'Remove' : false
].filter(function(s) { return s; }).join('And')