Greatly simplify subnodes collection in .getSubNodes()

The only trick was to collect all of them into a normal ArrayList which is
eventually reversed.

Much more simple than the previous code, more readable and faster.
Add trie matcher
Trie: documentation
Documentation for TrieMatcher
Minor code reformat
Small code modification
Annotate trie classes as @Beta
Add test helpers, plus TrieNodeBuilder tests
Tests for TrieMatcher; rename some test files