[hashmap] Adds `drain`: a way to sneak out the elements while clearing a map.

It is useful to move all the elements out of a hashmap without deallocating
the underlying buffer. It came up in IRC, and this patch implements it as
`drain`.

r? @Gankro
cc: @frankmcsherry
That seems reasonable. I'm tempted to mark them `experimental` (as maybe we want to let it bake a bit after 1.0) but I hear that's maybe on its way out as a concept.