Expandable structured support, organize editors, much more.

Wrote expandable editor support, so that StructuredName and
StructuredPostal could be displayed compactly on smaller
screens, but still expanded to edit all possible fields.

Reorganized editors to directly inflate classes instead of
using ViewHolder pattern.  This helps us prepare for focus
saving logic coming soon, and also required that each data
row have getViewId() to be uniquely identified.

When editing EAS contacts, don't use separate types for
"Email 1", "Email 2", etc, and instead use a single overall
limit on type-less values.  (This is dependant on
http://b/2065904 being resolved.)

Defined fallback "on-phone" account separately to prevent
confusion with Google account, also limited the possible
data types that could be entered.

Suspend aggregation while persisting RawContacts updates
to prevent possible re-aggregation and user confusion when
returning to View activity.  Also correctly generate
AggregationExceptions when inserting new RawContacts under
an existing aggregate.  Fixes http://b/2087517

When inserting Google contacts, add GroupMembership for
"My Contacts" to help visibility, fixing http://b/2070479

Don't reprompt for account when rotating during INSERT,
fixing http://b/2084585 and hide editor until finished
with async loading.  Ensure that specific rows exist so
we always have StructuredName to edit, and have waiting
Phone and Email fields for INSERT.

Used better method of creating generic ArrayList/HashMap.
25 files changed