Updated to respect BDFL's wishes:

1.  Always preserve the [latest] case that a key was set as
2.  If something with a different casing is set, it'll remove the
    other one before setting the new value

Still need to flesh out tests