Add change event listener APIs.
Turns out we can't do the hash idea with SQLAlchemy.  Change to standard
revision_ids.  Added update API.