Support non-integer belongs_to foreign_key type
Added :foreign_key_type option to @queryable_defaults

The :forgein_key_type option allows users to set the default type
for any belongs_to association foreign keys.
Add test to ensure that :type option to belongs_to/3 overrides any option specified in @queryable_defaults
cleanup ugly code in lib/ecto/entity.ex
Merge pull request #143 from TanYewWei/issue-142

Support non-integer belongs_to foreign_key type
Change Ecto.Repo.Backend.validate_entity/1 handle the result of
Ecto.Query.Util.value_to_type/1 correctly when the value is a list.

Wire up Postgres backend to support lists -> ARRAY properly via an Ecto
type defined as the tuple { :list, type }.
Pull request #139 made quoting a requirement.
Handle type mismatch in Util.value_to_type and return error, otherwise
extract inner type and return in the expected tuple format.