[range] Optimize erase() in C++11 - use std::move() instead of std::copy() if possible.
[range] Remove unneeded code and comments
[range] Add support for invalidating resize() and workarounds for MSVC and MinGW.

Using of the iterator returned by erase() caused assertion failures (false positive) on MSVC with iterator debugging enabled.
MSVC std::vector can't store non-movable objects if rvalue references are supported.
MinGW std::vector can't store pointers.
Merge pull request #73 from awulkiew/feature/range

[range] Optimize range::erase() in C++11