sum function does not return the same type it receives

This issue follows the discussion started at https://github.com/meteficha/esqueleto/issues/26.

While in SQLite ~~and MySQL~~ the sum function returns the same type it receives, this is not the case in Postgres
http://www.postgresql.org/docs/9.2/static/functions-aggregate.html
In fact, when summing to 'BigInts', the result is 'Numeric', which translates to Rational in the underlying Postrgres haskell libs.

The MySQL case is also not easy, since it depedends on the [versions](http://stackoverflow.com/questions/10592481/what-is-the-return-type-of-sum-in-mysql) or [alternative implementations](https://mariadb.com/kb/en/set-functions/)

To support this, a change is necessary in the code, specifying this:

sum_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value (Maybe b))

However, while this change has no impact on the sum_ test under SQLite, since its expected result type is already properly annotated, when run under Postgres this type needs to be changed to Rational.

Felipe added that:
> Actually, I think that the main problem in generalizing the type is actually
> making it harder to typecheck some esqueleto queries without using
> explicit type annotations.

So, the question is: should this function be changed to offer less (type) garanties while making it usable on more systems? Or should we create a different function?