WIP - Implement syncing of vault to a local store
Fix duplicate var declarations reported by tslint
Initial working implementation of Syncer.sync()

Ensure that the `updatedAt` timestamp in the contents.js
index file is incremented for an item each time it is saved.

Since the timestamp only has second-level resolution, this requires
the Item.updatedAt timestamp to be advanced if it is
less than a second ahead of the previous timestamp.
Decouple onepass.Item from onepass.Vault

In preparation for introducing a local cache of items,
decouple onepass.Item from the vault.

Instead of being associated with a Vault, items are now
associated only with an item_store.Store interface which
may either be the vault in Dropbox or a local store
(eg. in an IndexedDB).

Also fix several type errors in the Agile Keychain interfaces
and vault tests.
Decouple item content types from Agile Keychain format

Move functions for converting item content data to/from Agile Keychain
format out of the Item(Content|Field|Section) types.
Move item content types to item_store.ts

 * The item content types have now been decoupled from their representation
   in the 1Password vault, so they can be moved to item_store
 * Require import of 'sprintf' to use the sprintf() function
Replace dependency on onepass.Vault in app with item_store.Store

In preparation for making the UI use the local item store,
replace the dependency on onepass.Vault with a dependency on
the generic Store interface.