Adds support for PostgreSQL's enumerated types. Issue #246

`persistent-template`
=====================

* Generalized `derivePersistField` into `derivePersistFieldGeneric` that accepts
  a `Q Exp` for the `PersistFieldSql` instance.
* Added `derivePersistFieldSqlTypeOther` which creates the `PersistFieldSql`
  instance with `SqlOther`.
* This fixes migrations always using `VARCHAR` in #246.

Example
-------

PostgreSQL:
```
CREATE TYPE color AS ENUM ('Red', 'Blue', 'Yellow');
```

Sum type:
```
data Color = Red | Yellow | Blue deriving (Show, Read, Eq)
derivePersistFieldSqlTypeOther "Color" "color"
                           --     ^       ^
                           --     |       +--- Name of type in PostgreSQL
                           --     +----------- Name of type in Haskell
```

Table definition:
```
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person sql=people
    name String
    favorite_color Color default="'Blue'::color"
    deriving Show
|]
```

`persistent-postgresql`
=======================

* Adds a check into `getGetter` that sees if the incoming type in a PostgreSQL Enum.
* If it is an Enum, it converts the `ByteString` to a `PersistText` via UTF8.
* This fixes reading the Enum in #246.