The changeover occurs after version 3, so make the #if's relative to 3.
Define BOOST_FILESYSTEM_NAMESPACE as "filesystemN" where N is the version number, and replace uses of "namespace filesystem" with "namespace BOOST_FILESYSTEM_NAMESPACE".
Build version 3 and 4 together. Source files changed to avoid C++03 unnamed namespace gotcha of symbols being external. This caused Windows linker to report duplicate symbols. Workaround: make affected symbols static.
For test/Jamfile.v2, run several critical tests for both V3 and V4. In build/Jamfile.v2, fix bug - utf8_codecvt_facet neeeds v3 and v4 builds. Fix typo in codecvt_error_category.cpp. Tests now passing for msvc and cygwin/gcc compilers.