3.0 - Table delete

Implement the requirements outlined in #2259.  This set of changes adds entity deletion to the ORM for 3.0. Right now pivot table records are removed using deleteAll(). I could see an argument for loading and deleting the entities instead, and I'm happy to change the code around. Some questions I had:

* Should the association classes now how to delete associated records? For example should `HasOne`, `HasMany` and `BelongsToMany` contain the logic for removing dependent/join table records instead of putting it all in `Table`. I think having it in the association allows user-land associations more flexibility in the future.
* I'm not sure the code will work with multi-column primary keys yet.

I think we will need to add a fixture set that includes multi-column primary keys so we can ensure saving & deleting associations with multi-column primary keys works. This may be the next logical block of work.