DATAJPA-389 - Introduce NativeSqlQuery type for native sql queries.

Extracted the functionality specific to the handling of native queries out of SimpleJpaQuery and moved that to the new NativeJpaQuery type. Moved common functionality to AbstractStringBasedJpaQuery and used that as a new base class for SimpleJpaQuery and NativeJpaQuery. Introduced JpqQueryFactory to centralise construction of JpaQuery objects. Renamed getQuery() method in StringQuery to getQueryString().