Remove cruft
Update string handling to use clear/append instead of construct/=
Update key storage/compare
This makes the binary smaller and seems to perform the same as before.
I probably need to re-write the key search to be O(log(N)) instead of O(N)
  but I think that g++ may be capable of that optimization iirc