implemented insertWithKey

I implemented the insertWithKey function. The implementation is mostly a copy and paste of the regular insert function with a small change to use the provided function to produce the new value instead of simply replacing it. We might want to refactor this to reduce the code duplication.

I never used Criterion before, and Trie and HashMap don't come have a insertWithKey function, so I'm not really sure if I did this part correctly.

Also included two tests. One for when the key is already present and one for when it's missing.