Description
We currently rely on commons-lang's levenshtein implementation. Ideally, we should have our own implementation to:
1. Reduce external dependency
2. Work directly against UTF8String so we don't need to convert to/from java.lang.String back and forth.