Merge from trunk:
* bad_any_cast exception is now visible across modules (fixes #8751)
* portion of optimizations and tests for rvalues
* added ability to call any_cast<T&&> (which is equivalent to std::move(any_cast<T&>))
* added clear() member function
* added missing BOOST_NOEXCEPT