use a data family for the Key

TODO

- [ ] tests don't compile
- [ ] MongoDB primary key support
mongoDB backend working
Merge branch 'persistent2' into key-family

Conflicts:
	persistent-mongoDB/Database/Persist/MongoDB.hs
add default-extensions: to the cabal file
fix some test failures
fix MongoDB merge error
get rid of Objectid newtype

who else is going to define the PersistField instance?
use backend key constructors
fix mongoDB
PersistStore backend constraint for generic entity
fix composite key TH

use the key constructor directly
instead of keyFromValues
use backendT variable
use Foreign key, not own key

also re-use backendT
mkKeyTypeDec for primary keys

primary key gets prefixed similar to other records
PrimaryKey { primaryKeyField1 ::

also use FieldDef for primaryFields
keyFromValues for composite keys
pattern match failure for mkKeyFromValues

also generate less code in fromPersistValues
re-use mkFromPersistValues and mkKeyFromValues
use simpleClause helper
generate instance for the key type
use typeInstanceD helper