Refactor hints to its own class.
Disable one test which requires changes to require_plugin() which will be done as a separate PR in order to keep this PR small.