I692 jts geometry

## Changes
* Added JTS Geometries support.
  * Now `querydsl-spatial` can be used with `hibernate-spatial` version **4.3**.

## Configuration
Maven pom snippet for brevity ...
```xml
...
<dependencies>
<!-- Spring -->
<dependency>
	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-jpa</artifactId>
	<version>1.7.0.RELEASE</version>
</dependency>
<!-- Querydsl -->
<dependency>
	<groupId>com.mysema.querydsl</groupId>
	<artifactId>querydsl-apt</artifactId>
	<version>3.5.0.BUILD-SNAPSHOT</version>
</dependency>
<dependency>
	<groupId>com.mysema.querydsl</groupId>
	<artifactId>querydsl-jpa</artifactId>
	<version>3.5.0.BUILD-SNAPSHOT</version>
</dependency>
<dependency>
	<groupId>com.mysema.querydsl</groupId>
	<artifactId>querydsl-spatial</artifactId>
	<version>3.5.0.BUILD-SNAPSHOT</version>
</dependency>
<!-- Hibernate -->
<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-entitymanager</artifactId>
	<version>4.3.6.Final</version>
</dependency>
<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-spatial</artifactId>
	<version>4.3</version>
</dependency>
</dependencies>
...
<build>
<plugins>
...
<plugin>
	<groupId>com.mysema.maven</groupId>
	<artifactId>apt-maven-plugin</artifactId>
	<version>${maven.apt.plugin}</version>
	<executions>
		<execution>
			<phase>generate-sources</phase>
			<goals>
				<goal>process</goal>
			</goals>
			<configuration>
				<outputDirectory>target/generated-sources/java</outputDirectory>
				<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
			</configuration>
		</execution>
	</executions>
</plugin>
...
</plugins>
</build>
```

## Example

Entity
```java
...

import com.vividsolutions.jts.geom.Geometry;

...

@Entity
public class Entity {

	...

	// The @Type annotation is Hibernate specific, and the only non-JPA annotation that is required.
	@Type(type = "org.hibernate.spatial.GeometryType")
	private Geometry geometry;

	...

}
```
`Predicate` for use with Spring's `QueryDslPredicateExecutor`
```java
...
public static Predicate spatialWithin(Geometry geometry) {
	return QEntity.entity.geometry.within(geometry);
}
...
```
An exception is thrown by hibernate as the spatial relation functions expect a logical operator. I tested this using Oracle Locator and [H2GIS](http://www.h2gis.org/) (FYI, H2GIS needs a custom dialect since hibernate-spatial only provides a dialect for [GeoDB](https://github.com/jdeolive/geodb/wiki)). I chose H2GIS over GeoDB because GeoDB stores the geometry as a `Blob` whereas H2GIS stores the geometry as a JTS `Geometry`.

```java
...

antlr.NoViableAltException: unexpected AST node: (
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2112) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2032) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:796) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:597) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800) [hibernate-core-4.3.6.Final.jar:4.3.6.Final]
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328) [hibernate-entitymanager-4.3.6.Final.jar:4.3.6.Final]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_03]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_03]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_03]
	at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_03]
	at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:289) [spring-orm-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at $Proxy47.createQuery(Unknown Source) [na:na]
	at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:123) [querydsl-jpa-3.5.0.BUILD-SNAPSHOT.jar:na]
	at com.mysema.query.jpa.impl.AbstractJPAQuery.count(AbstractJPAQuery.java:77) [querydsl-jpa-3.5.0.BUILD-SNAPSHOT.jar:na]
	at org.springframework.data.jpa.repository.support.QueryDslJpaRepository.findAll(QueryDslJpaRepository.java:121) [spring-data-jpa-1.7.0.RELEASE.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_03]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_03]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_03]
	at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_03]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:442) [spring-data-commons-1.9.0.RELEASE.jar:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:427) [spring-data-commons-1.9.0.RELEASE.jar:na]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:381) [spring-data-commons-1.9.0.RELEASE.jar:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) [spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:266) [spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) [spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) [spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:111) [spring-data-jpa-1.7.0.RELEASE.jar:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) [spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]
	at $Proxy50.findAll(Unknown Source) [na:na]

...
```