Add a bootstrapper to handle retrieving and caching the map configuration data

Signed-off-by: Blake Skinner <bskinner@mit.edu>
Huge code reorganization to prepare for documentation (and just clean it up in general). Also fixed a few issues with performing operations before the map has loaded and added in support for the MGSBootstrapper class.

Signed-off-by: Blake Skinner <bskinner@mit.edu>
Added const values for invalid coordinates and regions. These are generally used as guards and should return NO when passed to CLLocationCoordinate2DIsValid and MKCoordinateRegionIsValid

Signed-off-by: Blake Skinner <bskinner@mit.edu>
Rewrote the syncing code to be a bit more thread-safe. A semaphore is now used to make sure that we don't get a half updated set of layer annotations (or worse, mutate the set while we're enumerating it). Also added a sanity check to the re-projection of the ArcGIS graphics to filter out any potential NULLs.

Signed-off-by: Blake Skinner <bskinner@mit.edu>
Minor API change: instead of 'centerAtCoordinate', MGSMapView now has a centerCoordinate property.

Signed-off-by: Blake Skinner <bskinner@mit.edu>