Add the abstract uuid type.

The uuid type is now available in all database platforms, this will
allow us to properly use this type elsewhere in the framework and
autopopulate it correctly when entities are saved.
Add UUID column generation

For platforms with no UUID type we'll use char(36) instead.
Update fixtures to use uuid column type.
Add new UUID data type converter.

Having a UUID data type converter allows the Type system to be extended
and have new primary key provider methods added. This makes generating
new ID's for UUID's extensible by userland code and should allow for
sequence support to be added in the future.
Fix boolean casting in SQLite.

Boolean values come out as '1', '0'. These should be cast into proper
boolean values by the type system.
Add automatic generation of UUID primary keys.

When saving new records we should have hooks to populate the primary
keys of entities in through the type system. This restores the auto-uuid
population, and allows user defined types to populate as well.

Add a new integration test to ensure saving/updating/deleting works as expected.
Extract primary key value generation into a separate method.

This allows users the ability to override pk generation if they don't
want to use the type system.
Merge pull request #2302 from markstory/3.0-string-pk

3.0 - Re-add automatic UUID generation when saving records