Added ExecutableQuery

There was a bit of a mess with the EntityMapper creating the StatementSources for the LazyCollections and
the LazyCollections relying back on the mapper to execute the StatementSources.

The ExecutableQuery has the DatabaseAdapter injected and is self executable. LazyCollections are
instantiated with an ExecutableQuery so they can execute it when needed.

All the logic for counting, getting the ids and paginating a given query has been moved from the EntityMapper
to the ExecutableQuery.