Drain and filter at the same time, accepts a mutable vector ref and predicate.
The predicate receives a vector element ref for the current iteration and
in-place removes the element from the vector, if predicate returns true.
Returns and array of removed elements back.