Fix #249: Guard against events not existing in MySQL 5.0
Merge pull request #250 from iarna/mysql-five-dot-oh

Fix #249: Guard against events not existing in MySQL 5.0
Fix guard against events not existing
Remove needless body rewriting

In earlier, more naive versions of the parser, ensuring that the bodies of
procs, events and triggers were always in BEGIN / END blocks was helpful,
but this has been unnecessary for a long time, and only adds needless room
for new errors to creep in.
Merge pull request #251 from iarna/remove-needless-body-rewriting

Remove needless body rewriting
Fix false view diffs
MySQL compresses the spaces between the AS keyword and the select statement,
so we need to parse at least that far.
Marking a column as primary implies a non-null default, even if you asked for one previously
When altering constraints, separate the drop from the add.
Fix false event diffs
Events are tricky to handle right, for two reasons:

1) STARTS and ENDS can be expressions in your SQL but are stored in MySQL as
absolute dates, computed at the insert time.

2) We instantiate a status of DISABLE ON SLAVE such that when we're done
it's set to ENABLED in MySQL. This is a weirdo local DBA custom that can
probably be done away with.

This fixes both of these, by storing STARTS and ENDS as metadata, since
MySQL won't round trip them for us, and treating DISABLE ON SLAVE in the DB
you're migrating to as equivalent to ENABLED in the one you're coming from.
Merge pull request #253 from iarna/fix-view-event-diffs

Fix view and event diffs
Merge pull request #254 from iarna/fix-constraint-changes

Fix constraint changes