This fixes a set of bugs related to tracking which threads are active in
getBitmapFromURL.

We now use an atomic counter to track how many threads are active it the
getBitmapFromURL method.

1) No more concurrent modification exceptions, (1 thread is checking
checkThreadControl whilst another is calling getBimapFromURL)
2) No more forgotten elements, there are exit paths that could lead to
elements never being removed from the list (GeneralSecurityException &
empty url)
3) Less memory being used.
This contains 2 simple bug fixes:

1) Possible (unlikely) concurrent modification exception in
UserLocationOverlay
2) We wil now cache the default icon, so we don't run out of memory when
we are loading large GeoJson files.
This change contains the following changes:

1) GeoJson is now capable of parsing out the marker styling as
documented here: https://www.mapbox.com/developers/simplestyle/
2) Icon now cache the marker urls using an LRU so we don't keep
downloading the same image over and over. The cache is clever, so if you
try to download the same url in quick succession it will result in only
a single download.
make sure MapEventsOverlay is first (last when reversed)
put back boundMarker to null or next click wont work
only use onSingleTapConfirmed
A bunch of changes to improve marker drawing
force an id in TileLayer constructor which is actually a cacheKey. It is representing a "class" id and not an object id
fixed examples
added target to build jar(not used by default)
updated library with min sdk set to 4
removed unwanted replaceMapView
added TODO for optimization
init to null to be sure
refactoring to optimize boundingBox computation.
Now the boudingBox is computed in the projection. And when the mapView asks for boudingBox it just returns the one from the current projection
prevent a big "boundingBox computation" bug.
When computing the bouding box we can end up with latNorth == latSouth or longEast == longWest. This is because of the wrap method in Projection.pixelXYToLatLong.
In that case it actually means we see the whole world. Handle that in BoundingBox constructor to prevent "empty" box
i think minSDK 8 is enough
updated lib with purgeMemoryCache
forgot in last commits. Sorry
getTileSizePixels in MapTileLayerBase. Useful to handle scale loop with MapTileLayerArray