Basic function and trigger migrations

Added the ability to create, rename, or drop functions and create, rename, and drop triggers in migrations [postgresql only for now].

It is now possible to do more DDL work in migrations specifically around creating, renaming, or deleting fuctions, and creating, renaming, and dropping triggers.  The goal was to be able to handle more of the database schema through migrations by allowing more of the constraint capabilities exposed.  Functions were required for postgresql to be able to create triggers.

This feature was only implemented and tests created for postgresql as that was the database engine I was working with and could test.  The rest of the supported engines will get unsupported migration messages if used.