allow "foreign" keys to point to the same table

This is a simpleminded approach to having the automatic
dropdowns, list display, etc work when your "foreign key" is
actually in the same table.  Without this, you get ambiguity
in your SQL because two tables have the same alias.
Switch foreign key join to left join

Need a left join, or we don't see the rows in
list view where the foreign keys aren't set (in
the case of foreign keys that are nullable)
hooks for pre_save and post_save; more data passed to hooks

This adds hooks called add_edit_row_pre_save and add_edit_row_post_save.

The pre_save hook is meant to replace the previous add_edit_row hook,
which the documentation in this commit deprecates.  The code for the
'deprecated' hook is not changed at all and doesn't necessarily ever
have to.

The hooks get a lot more data, so they can tell what table_name was
passed to the handler originally, and on post_save there is a
reference to the database handle so they can get last_insert_id
if they need it.
Merge pull request #32 from msouth/feature/slightly_smarter_aliases

Feature/slightly smarter aliases