Added a randomised dictionary test case which should have finally exposed all issues with the `insert` and `remove` operation implementation. Fixed all the exposed issues and improved the laziness in a few areas avoiding unnecessary allocations in some common cases (such as `remove` with a key not in the dictionary).