adding vector::erase_unordered

This adds methods for erasing elements from a vector without retaining the vectors ordering. The implementation moves tail elements into the place of erased elements, which results in only copying the number of elements removed as compared to the default erase which must copy all elements from the last removed element until the end of the vector. This is a faster erase to use when the order of elements is not important.