Adds support for many MySQL types

This will probably fail on Travis right now, it depends on this: https://github.com/felixge/node-mysql/pull/402 being merged into node-mysql to support the MySQL Set type.

Otherwise it could probably do with a unit test for every type (Int, Uint, TinyInt... blah), though I did make explicit tests for the more exotic types.

It also changes how the additional schema/backend specific types are registered/work.

I declared them as objects with a `parse()` method in mysql.js, and changed mainline juggling to check `hasOwnProperty('parse')` before falling through. This removes the need to register types in the array found in AbstractClass.

Anyway, lots of changes, not sure how you'll feel about them. The spacing changes in several places were an accident of autoformatting.