HOCON: class reference detection on string literals

The primary purpose of this PR and the only actual new feature is detection of fully qualified class names inside strings and making them understood by IDEA as references to these classes.

Also, some more generic refactors and improvements have also been included in this PR - primarily the hierarchy of PSI classes. They were needed to cleanly implement reference detection but by themselves are of general purpose.

In detail, this PR contains:
* Hierarchy of PSI classes instead of a single `HoconPsiElement` class. For now, these classes are mostly stubs - their API is incomplete and will be extended in the future, as needed by new feature implementations.
* Changes to AST structure: `Value` node has been removed, `Concatenation` and `String` nodes have been introduced. 
* Parser tests updated to match the new AST and PSI
* Class reference detection on unquoted and quoted strings - implemented by `HoconReferenceContributor` and `HStringJavaClassReferenceProvider`.
* `HStringManipulator` - needed so that class references in HOCON files are properly updated when renaming classes.
* Tetsts for `HStringManipulator`
* Project settings for HOCON. As for now, the only options available allow to disable class reference detection.

Implementations are mostly based on how similar things are implemented in the Scala plugin itself.