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. 
This is where the actaul caching function gets called. It is triggered on whether or not there are regions defined on the config.json. It will prompt the user to cache tiles if they have not been cached already. this probably needs to be turned into a modal? An should be shown at the start of the survey on paged surveys (which I cannot test right now).