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