Hash#delete returns canonical empty Hash when removing last key
Hash#merge avoids allocating new Hash when merging with an empty Hash
Small optimization for Hash#put, #map, #filter