Merge pull request #4360 from RosettaCommons/roccomoretti/boost_submod
Update Boost to 1.71, convert to submodules.
The primary goal of this PR is to update Boost to a more recent version, but as a part of it it converts Boost from a "vendorized" (code-in-main repo) to a submodule system.
The Boost submodules should be auto-updated as part of the build process (the `update_submodules.sh` script), so it should (hopefully) be invisible to most people.
Here's how it's laid out: The existing source/external/boost_1_51_0/ directory is removed, and a new source/external/boost_submod/ directory is added. (And all build systems should be updated accordingly.) Within that subdirectory are direct links to the ~86 submodules of Boost that we're currently using (from https://github.com/boostorg/). (While Boost provides a "superproject" repository, we're not using that, and as such don't have to deal with nested submodules.) The submodules should be pointing a the 1.71.0 release tag version.
Most of the submodules are being taken directly from the Boost.org's GitHub page, but there are a few with Rosetta-specific changes we're hosting directly.
The layout of the submodules doesn't quite match the layout of the released boost directory, so there's a script which will symlink the contents of the submodules into the appropriate locations in source/external/boost_submod/boost/ (it prefers to symlink directories, but there are certain things it needs to symlink as files.). Those symlinks are committed into the main repo, and shouldn't need to be regenerated unless we update Boost.