Add test skeleton methods for Table::delete()
Start implementing delete.

Basic simple deletes are working now.
Add tests for callback related features.
Add dependent record deletion.

Dependent records need to be loaded before they are deleted. This
ensures that all the lifecycle callbacks and event listeners are
properly notified. Loading and then deleting is not ideal from
a performance prespective but compromises have to be made sometimes.
Add doc blocks to CallbackStatement.
Add deletion of join table records for BelongsToMany associations

When cascade is true we should remove rows in BelongsToMany join tables.
Ideally people will set this to false and use database constraints, but
this is a reasonable backup in case constraints aren't used.
Improve doc blocks a bit.
Fix failing tests.
Extract cascading deletes into the association classes.

Doing this allows each association to handle cascading deletes in their
own way. I think this makes the code cleaner, and allows userland
associations to participate in cascading deletes. In addition a new
trait has been extract to avoid inheritance/code duplication in
HasOne/HasMany.
Add unit tests for association classes & cascadeDelete.

In addition to the Table integration tests, these are helpful
to have as they test conditions in the associations.
Pass the delete options into cascadeDelete calls.

This allows the cascaded deletes to access the original options used
for the delete.
Pass options into cascaded deletes.
Fire beforeDelete & afterDelete events from inside the transaction.

This helps ensure that any reads/writes done by an event listener are
part of the same transaction as the orginal delete request.
Add cascadeCallback option to associations.

This option allows control over how associations are deleted. Allowing
developers to choose the more efficient deleteAll() or the slower load
+ delete option which also includes callbacks. Using the slower mode can
be helpful when your application relies on life-cycle callbacks.
Add missing return and remove else statements.
Merge pull request #2270 from markstory/3.0-table-delete

3.0 - Table delete