Texture atlas

* Combines `TextureAtlas` and `TextureAtlasBuilder`. 
* Makes `TextureAtlas` and `BillboardCollection.textureAtlas` private.
* Removes `Billboard.imageIndex` and adds `Billboard.imageUrl` and `Billboard.image`.

For #1688.

The functions in `TextureAtlas` were changed to mimic those that were in `TextureAtlasBuilder` though it may be better to return promises. See the use of the `TextureAtlas` in `LabelCollection` which expects the callbacks to be executed before returning.


This comment is confusing.  Doesn't this code work regardless of whether or not the billboards are in the same collection?  It's just a difference in optimization or memory usage, correct?  The user shouldn't care about that detail (I would just remove this line if I'm correct).