Ensure Contacts added to DB are unique.

First data integrity bug caught with the unit tests.  A small victory.
Ensure Contacts removed from a user are deleted entirely from the DB.

Another unit test catch.  Yay data integrity.
Minor code cleanups to DB models.
More DB integrity fixes.
More tests.