use precompiled pattern objects for replacement operations
rename method getWordStemObject() into getWordStemTerm()
rename property normalizedTerm into encodedTerm
changed property and accessor method nomenclature to better reflect property semantics
remove method getCleanedStringWithWordStemResolved() which is declared final in superclass (+1 squashed commits)

Squashed commits:

[bb0866c] provide implementation for previously abstract method getCleanedStringWithWordStemResolved()
cache the different variants of an abstract term, instantiate them lazily
rename class AbstractTermData into AbstractTerm to better fit the names of its subclasses
add factory classes for terms
remove term factories, internal data is cleared when setters of term data objects are called
comment out methods referring to UserProfile
regular terms will also encode and decode user input
add unit tests
fix incorrect code removal
fix and add unit tests
reenabled commented out method
Merge branch 'feature/refactor_terms' into develop