Introduce introspection result assembler

To allow for customized introspection results.

The assembler produces a Map<String, Object> that is rendered by the (already existing) JsonEntityView.

Notes about the cleanup in IntrospectionEndpoint:
- log level adjusted from error to info for expected exception (in case a refresh token is introspected)
- tokenClient and authClient are guaranteed to be non-null; removed the respective null checks
- use specific token types (OAuth2AccessTokenEntity / OAuth2RefreshTokenEntity) to not have to resort to instanceof checks before calling the assembler