HV-637 Improving caching in message interpolation

Now the tokenized message strings are cached as well. Also caching is done using ConcurrentReferenceHashMap with soft references to avoid memory leaks.

Renaming of ParserContext and MessageDescriptorParser to TokenCollector and TokenIterator to better reflect their use
HV-637 Pre-calculating the hash code for some instances which are immutable
HV-637 Cleanup of test
HV-637 Formatting
HV-637 Avoiding proxying for Annotation#equals and Annotation#hashCode