Allow node globals
Use util.inherit + ES6 syntax
Remove Source's this.painter
Reduce coupling between source and map with events

Fire and listen for events rather than calling map.update()
directly. While here, fix issues with source.add event and
bubble style.change event through map.
Refactor GeoJSONSource updating

Use the #update interface established by Source. Map will
call this method when needed.
Inline _updateStyle and _updateBuckets
Fix zero-duration transitions
Merge pull request #867 from michaelsteffen/zero-trans

Fix zero-duration transitions
Fix GeoJSON source rendering
enabled ⇢ _loaded
Flatten test structure, remove test for removed fn. Fixes #868
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
cleanup and fix tests after GeoJSON upgrade
fix case with no url in TileJSON