DATACMNS-516 - Add support for limiting the query result in the query derivation mechanism.

We can now detect whether a given query method wants to limit the query results based on two new supported prefixes (findFirstBy…(…) and findFirstKBy…(…)) where "First" part can also be replaced by "Top" and an following optional K (which must be a decimal int) that denotes the maximal number of result rows to be retuned by the query.

This can be used by the stores to allow queries like:

- T findFirstBy…OrderBy…Asc -> smallest
- T findFirstBy…OrderBy…Desc -> greatest
- T findTopBy…OrderBy…Desc -> greatest
- T findFirstBy…(Sort sort) -> general purpose
- T findTopBy…(Sort sort) -> general purpose
- List<T> findFirstKBy…OrderBy…Asc -> smallest K
- List<T> findFirstKBy…OrderBy…Desc -> biggest K
- List<T> findFirstKBy…(Sort sort) -> general purpose TOP K
- List<T> findTopKBy…(Sort sort) -> general purpose TOP K

The limiting expressions also support the Distinct expression. Also, for the queries limiting the result set to one instance, wrapping the result into an Optional is supported.

If pagination or slicing is applied to a limiting query pagination (and the calculation of the number of pages available) is happening within the limited result.

Original pull request: #85.
DATACMNS-519 - PagedResourcesAssembler now keeps template variables of base link.

Significant overhaul of the link creation in PagedResourcesAssembler.
DATACMNS-520 - Fixed @Param validation in Parameters.

Parameters erroneously rejected @Param annotated query method parameters that were preceded by a non-bindable type (like Pageable or Sort) as it checked for a 0 index of the parameter. We now manually keep an index in the check itself and have removed the Parameter.isFirst() method as it's not used anywhere else.
DATACMNS-521 - Disabled querydsl-next profile in Travis build.
DATACMNS-523 - Pulled up FieldNamingStrategy SPI from Spring Data MongoDB.

Pulled up the SPI for field naming from Spring Data MongoDB for reuse in other Spring Data modules.
DATACMNS-518 - Avoid potential infinite loops in PreferredConstructor.

We now synchronize the (seldom) writes to the isPropertyParameterCache HashMap in PreferredConstructor via a ReadWriteLock. We could as well have used a ConcurrentHashMap here without the need for manual locking but this would potentially waste memory for a mostly read-only data structure. We also anticipate potential multiple writes for the same property.

Original pull request: #86.
DATACMNS-522 - Updated changelog.
DATACMNS-528 - Upgraded to Spring HATEOAS 0.14.0.RELEASE.
DATACMNS-527 - Upgraded to Java 8 stub in correct version.
DATACMNS-529 - Adapt to Spring 4 upgrade.

Upgraded Servlet API version to 3.0.1 as it's required by Spring 4's test packages.
DATACMNS-529 - Removed reflective lookup of DefaultParameterNameDiscoverer.

As we build against Spring 4 now, we can replace the reflective lookup of DefaultParameterNameDiscoverer to a simple instantiation.
DATACMNS-535 - Build now requires Java 7 to run.

Added Maven Enforcer Plugin to make sure the build is run against a JDK 7.

Related ticket: DATACMNS-532.
DATACMNS-532 - Added support for default methods on repository interfaces.

DefaultRepositoryInformation now excludes default methods from the query methods it detects. RepositoryFactorySupport adds a special MethodInterceptor to the proxy which handles the invocation of default methods.

Related tickets: DATACMNS-535.
DATACMNS-535 - Build now requires Java 7 to run.

Remove ‘openjdk6’ from travis.yml.
DATACMNS-534 - Add support to mark a persistent property as read only.

This commit introduces @ReadOnlyProperty to mark properties as not to be persisted. That trait is exposed via the newly added PersistentProperty.isWritable() which supersedes shallBePersisted(). Currently all non-transient property that are not annotated with @ReadOnlyProperty are considered writable.

Original pull request: #88.
DATACMNS-527 - Remove links to forum.spring.io.

Linked to spring-data tag on StackOverflow.

Original pull request: #90.
DATACMNS-536 - Polish APT plugin configuration.

Original pull request: #87.