Overwrite by key

This seems like a generally useful merge strategy. Allows you to handle lists slightly more carefully. 
This special case for an empty string seems unusual to me. It would make more sense if an entry would be ignored if the ```match_key``` is absent in ```head_item```.