Hide the preprocessor data from public API

This commit hides the class that is used to
store preprocessor data, as well as many
setters for the query. It makes the public
API way cleaner.
Documentation