Marked recursive method overloads as private
Implemented trie value support
* template can now be specialized on a value type
* simple existance check of trie paths can be achieved using the check member method
* new get member method can be used to query values
** values are stored as std::pair<bool, Value> to make them optional
* expanded test cases accordingly