Push style JSON loading into Style constructor

This is consistent with the Source constructor, and makes
it so that Map#setStyle can accept a URL.
Migrate source APIs to Style

Move addSource/removeSource to Style and makes the style object
the single truth for the set of sources. Extend the convention
of forwarding events up the tile->source->style->map hierarchy.

Fixes #864
Normalize source/style/tile eventing

* Add "load" and "error" events
* Always fire "load" asynchronously (don't release Zalgo)
* Forward all events up the tile⇢source⇢style⇢map hierarchy
* Add source/style properties to forwarded events
Test that setStyle can be called more than once (#864)
Fire tile.error events
Normalize sprite events
GeoJSON on steroids (using geojson-vt)

Fixes #464
Fixes #670
Fixes #694