Generic BK-Tree Template used to store dictionary like
structures and perform fuzzy search on them. K must implement trait
distance before it can be used as key here.
This trait used by BKTree to tell how close are 2 objects when fuzzy searching.
In case of strings, the distance function could be something like Levenshtein distance,
Damerau–Levenshtein distance, Optimal string alignment distance or anything similar.