Fix bug 820834: Use gSnippetsMap over localStorage if it's available.

Tests for localStorage support and, if it fails, reverts to using the
gSnippetsMap wrapper around IndexedDB. If it passes, creates a wrapper
around localStorage that is used in place of the browser-supplied
gSnippetsMap.

We can't use the browser-supplied gSnippetsMap because it only pulls in
3 keys from localStorage, which means we can't read the geolocation data
from it.