Added permanent caching to user/groups data & $q service

Now using indexeddb to cache user/group data permanently.  This data
rarely changes so a call to SharePoint._clear() would reset the
user/group data as needed.

$q was added to handle the deferred calls cleaner than our regular
async hacks.