Primary key support for int and string columns

Also support for upsert for objects which have primary keys.

Missing:
- proper core support for indexing (both strings and ints)
- migration support and verification
Can this ever actually do anything? If it's just a "just in case" thing then I think I might prefer an assert that _primaryKeyProperty was nil instead.