Improved type system with support for custom types

Previously types were determined by the Mysql TypeMap and no conversion was done on the way into the database or out of it. This change moves that responsibility to the actual type objects and adds a new pair of
methods to Schema: marshal and unmarshal.

```php
/**
 * A date and time type
 */
class DateTime extends Base
{
    /* (non-phpdoc)
     * @see \Pheasant\Type::columnSql
     */
    public function columnSql($column, $platform)
    {
        return $platform->columnSql($column, 'datetime', $this->options());
    }

    /* (non-phpdoc)
     * @see \Pheasant\Type::unmarshal
     */
    public function unmarshal($value)
    {
        return new \DateTime($value);
    }

    /* (non-phpdoc)
     * @see \Pheasant\Type::marshal
     */
    public function marshal($value)
    {
        return $value->format("c");
    }
}
```

Breaking API changes:

- DomainObject::fromArray no longer takes a saved parameter and it
  assumes the array passed is to be set without any of the magic that
  occurs in load()
- Schema::hydrate() assumes a database row and will always unmarshal it