Bug 989929 - [Contacts][Refactor] Create Contacts indexed DB library to ...

...support synchronization from the Global Contacts Datastore
Another potential optimization that comes to mind is to only generate indexes when we have contact tables of a significant size, let's say, of more than 1000 or 500 contacts. I am always thinking of low-end devices like Tarako here, and of course that assumes that indexes come with a significant impact in performance.

Also, I don't think that we should have indexes on columns that potentially contain lots of `null` values, such as organization.