Keep mInternalObjects in sync for CardArrayAdapter so that undo always works as expected.

If setEnableUndo is set to true, CardArrayAdapter tracks the Cards in the underlying array in a HashMap, mInternalObjects. If ArrayAdapter methods add, addAll, or insert are used to manipulate the CardArrayAdapter, mInternalObjects was not updated. So, the undo functionality would fail for any Cards added to the adapter in this way. Fixed this by tracking any changes to the adapter and reflecting this in mInternalObjects, keeping the HashMap in sync.