Fix several issues with menu control

 * Avoid access to unmounted menu component DOM
   when dismissing menu due to multiple dismissal
   events being processed. Ignore events received after
   the menu is unmounted.

 * Add item keys to menu item components

 * Fix React warning about unnecessary use of bind()
   when requesting ripple animation frame
Remove debug spam
Improve item overview loading and syncing performance

Previously the overview data for each item was stored as a separate
encrypted entry in the IndexedDB. When listing items
for the initial item view display and when syncing,
there was overhead for:

 * Listing each item key in the DB
 * Fetching and decrypting the item data

Since in the current app we always list all items - whether
for sync or display in the list view, reduce the per-item overhead
by storing all of the overview data as a single encrypted entry
in the IndexedDB.

The upside is that loading the whole item list is much faster.
The cost is that saving an item change requires loading the whole
map, updating a single entry and writing it back. To speed this up
during the initial sync, a batching mechanism is introduced to
batch together updates to the overview data map.