HSEARCH-1664 Setting up jQAssistant to detect implementation types being...

... exposed in public API/SPI

This uses the [jQAssistant](http://jqassisant.torg) tool to detect any implementation types which are exposed via the public API/SPI. To do so, run

    mvn clean install -Pjqassistant -DskipTests=true

This will fail the build in case any implementation types are exposed through the API/SPI. Technically, the tool loads all the project types, their methods, relationships etc. into a graph database (Neo4j) and which then can be queried. Any queries in `jqassistant/rules.xml` will be executed during the build, and if they return any result, the build will fail and the query results be shown (incorrectly exposed internal types in our case).

Note that by running

    mvn jqassistant:server

a Neo4j server will be spun up at http://localhost:7474/browser/ which allows to query the database in an interactive manner and develop/test queries.