Log caught exceptions in their entirety
Remove access token match before storing new one
Update to Spring OAuth 2.0.4.RELEASE

Removing the "failOnError: true" was necessary to
avoid an inaccurate ValidationException being thrown.

It looks like the change introduced in Spring OAuth 2.0.4
to re-store an existing access token in DefaultTokenServices
is the root cause:

https://github.com/spring-projects/spring-security-oauth/issues/283

The implicit validate call will query the database and will result
in the unique constraint for the authenticationKey property being
violated if the token exists.

Since the existing token is removed at the beginning of storeAccessToken,
removing "failOnError: true" will effectively defer the validation,
allowing the current state of the database (from the perspective of
the database transaction) to be used to validate the new instance, i.e.
the previously existing token will no longer exist when it's really
time to persist the newly created instance.
Refactor unit tests into unit and integration