Track updates to underlying list in mInternalObjects.

If the list is modified outside of the CardArrayAdapter, re-generate
mInternalObjects in notifyDataSetChanged(), as it's contents are now stale.

Change-Id: I5bc6879970fbc1d8debc21d6dd0a8b8185ab2b30
Upon card removal, put them back in mInternalObjects.

In CardArrayAdapter, notifyDataSetChanged() will now rebuild
mInternalObjects from the current list contents. However, this will
discard removed cards unless they are added back in upon swiping. Fix
this bug by adding removed cards back in.

Change-Id: Ib836fc8773b7a087090760e119094d2decc1ecf6