Continue cleaning up `collections::binary_heap`

Some more tidying up.
I realize this is the old behaviour, but is the zeroing really necessary? Can this not be implemented in terms of mem::swaps?