Unordered: Support optional allocator methods.
Only for compilers with SFINAE expressions and recent versions of Visual C++. Also fix Visual C++ 8, and use BOOST_UNORDERED_ prefix for all macros.