This makes the logic quite a bit easier to follow, and fixes an issue
with the previous implementatation, where it didn't correctly handle
the case when were multiple long names that collided after being
shortened
Conflicts:
brut.apktool.smali/util/src/main/java/ds/tree/DuplicateKeyException.java
brut.apktool.smali/util/src/main/java/ds/tree/RadixTree.java
brut.apktool.smali/util/src/main/java/ds/tree/RadixTreeImpl.java
brut.apktool.smali/util/src/main/java/ds/tree/RadixTreeNode.java
brut.apktool.smali/util/src/main/java/ds/tree/Visitor.java
brut.apktool.smali/util/src/main/java/ds/tree/VisitorImpl.java