Improve BinaryHeap::retain.
Improve BinaryHeap::retain.

It now doesn't fully rebuild the heap, but only the parts that are
necessary.

aidancully/rust,aidancully/rust,aidancully/rust,graydon/rust,graydon/rust,graydon/rust,graydon/rust,aidancully/rust,graydon/rust,aidancully/rust,graydon/rust,aidancully/rust