Common Data Representation for Tiles

- Provides a simple, compact format for vector tile data that can represent GeoJSON, MapBox Protobuf, and other forms of vector tiles. 

- Removes use of JSON types except in places where we convert it to this common format. 

- Uses center of tiles as origin for geometry (previously we used the upper-left corner)

- Uses normalized displacements for representing geometry within tiles (previously we used un-scaled meters)
Since DataSource size does not depend on tileID, tileData and mapTile, would be cleaner to have a forward declaration for these and including the header in the cpp.