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 add these dependencies in order to get the code running