libcore: LinearMap doesn't need to pass around the bucket vec
core: rename hashmap test functions
core: add LinearMap::find_or_insert{,_with}

This allows for inserting a new value into the map only if it doesn't
already exist in the map.
auto merge of #4880 : erickt/rust/hashmap-cleanup, r=catamorphism