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 added the storeName keyword to maps to use as the name of the database to sore the tiles in. A better solution might be to slugify the map.nam field. But as long as only a developer is changing this value it might be fine.