Rewrite display groups to persist changes in transaction.

In a previous change we relied on now-removed query
parameters to delay visibility updates until forced through
a specific update.  This would leave the contacts list in
a stale state when the user left the Activity through
non-typical methods, such as notification or home key.

This change keeps all user edits in memory, reusing code
from our edit UI, and persisting them in as a single
transaction when finished.  This also adds a button bar
to help confirm or revert changes.  Fixes http://b/2075275

In addition, this change cleans up inefficient code where
we had been previously joining together up to 3 cursors for
each account to match a given UI spec.
3 files changed