Add Walk functionality to SuffixTree

- Switch from custom tuples to javatuples.org implementation
- Update SuffixTree construction to go from front to back
- Create a Walk interface that can be used to implement algorithms that
involve searching the suffix tree irrespective of the suffix trees
particular implementation.
- Add Walkers class to store a set of provided Walk implementations
- Create test walks for contains and depth
Provide default walks

- Added size, depth, distance and distance with maximum value
- Updated walk function to use a priority queue and added a compareTo
function to the walk interface
- Removed some of the functionality from SuffixTree that is now
available via Walks
- Replaced occurrences of Pair<Sequence, Integer> with Position class to
improve readability