Tile caching

@edrex 
This is the first stab at integrating an offlineLayer with enketo. Hidden maps are not displaying properly, I suspect this is on enketo bug, not because of tile caching.

The regions are defined in config.json, this needs to move to somewhere that the survey author can define them. Also the config.json map objects need to include a 'storeName' to use are the name of the local database. 
I stored the state of wether or not the tiles are already cached in localStorage. A better solution mught be to store that in the data store being used by the caching. 
I had to move the map initialization up to line 606 (before I run _getOfflineLayers()) because in order to define the offlineLayers you must already have a map instance defined.