Passes 'extension' information to hasOne associations

An extension model has a hasOne association to the initial model, but
there's actually no association (avoids duplicating column
association_id)
Uses extension option to know when a model is an extension

Also in this commit:
- passes singleton uid to instance
- previous addInstanceProperty workaround is now deprecated
- exposes singleton uid in instance
Updates Model.extendsTo to clear singleton cache when removing an extension (because of readding)
Updates drivers DDL to support extension tables
Adds initial Model.extendsTo tests