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 you rephrase to 

> When a primary key is specified, `-isEqual:` calls `-isEqualToObject:` and a corresponding implementation for `-hash` is also implemented.