changed FuzzySearch:

renamed toListBF -> toListShortestFirst
renamed prefixFindCaseWithKey -> prefixFilter
renamed prefixFindNoCaseWithKey -> prefixFilterNoCase
removed prefixFindNoCase
removed prefixFindCaseWithKeyBF
removed prefixFindNoCaseWithKeyBF
removed lookupNoCaseBF

TODO: tests are not working. seems like prefixFilter doesn't
generate an optimized tree:

expected:
BrSeL {syms = "Ab", value' = 7, next = Branch {sym = 'a', child = Val
{value' = 4, tree = BrVal {sym = 'a', value' = 5, next = LsVal {sym =
'b', value' = 2}}}, next = LsVal {sym = 'b', value' = 6}}}

but got:
Branch {sym = 'A', child = Last {sym = 'b', child = Leaf {value' = 7}},
next = Branch {sym = 'a', child = Val {value' = 4, tree = BrVal {sym =
'a', value' = 5, next = LsVal {sym = 'b', value' = 2}}}, next = LsVal
{sym = 'b', value' = 6}}}