Allow passing relationname to define specific model relation endpoints.

This also allows you to define model relation specific include and excludes,
methods, and pre and post processors.
Fixed default relationname for /model/relation/<id>.
Fixes issue 216: Use query limit/offset on query instead of query result.
Fixed issue with include and exclude rules not applying consistently.

Excluding a relation should be as simple as specifying the relation in exclude,
this was not the case before since you needed to exclude all fields under the relation.
Allow paginated to work with list results.
Fix tests for feature manually specify model relation endpoints.
Fixed doc string, has_field should work for hybrid_propery fields as far as I can tell.
Allow filtering of exposed model relation endpoints.
Explicit declaration of exposed sub-resources.

Enables explicit declaration of exposed model sub-resources by
passing a `relationname` parameter to the `APIManager.create_api`
method.

This enables model relation endpoints to declare their own include and
exclude rules, methods, and post and pre processors.

If relationname is not passed to create_api, only the primary model
endpoints are created (e.g. /api/person, /api/person/1) you won't be
able to access other endpoints. Additional calls to create_api which
include the `relationname` parameter create the relation endpoints and
at this point include and exclude rules as well as post and pre
processors can be passed (Same as the primary model or different).

This also enables filtering of exposed relations using the same API.

This introduces two backwards incompatible changes.

1) Each exposed relation endpoint needs to be defined using `create_api`
   and passing the `relationname` parameter.

2) When passing `exclude_columns`, if you wish to exclude all relational data
   in a field, you only need to pass the field name, and not each field
   under the relation. For example,

   ```exclude_columns = ['country']```

   Instead of

   ```exclude_columns = ['country.name', 'country.code']```

This commit also updates the `has_field` doc string, which should also work
for `hybrid_property` fields.
Cleanup some logic to make it easier to follow.
Cleanup rebase.
Cleanup.
Fix tests after rebase.
Cleanup.
Cleanup.
Skip excluded relations from columns.
Fixes.
Fix for lowest level resource e.g. country/1/city/1.
Save all dates in UTC.

Postgres datetimes are not timezone aware.

Should work to save datetimes as UTC in Mysql as well.