This patch does the following:
- This adds in the CI components for automated testing.
Currently, CodeCov does not work as we do not have tests
yet, and Perforce has not been tested yet. All other
build types have been tested on Windows and Linux.
- This moves the build system to ExternalProject_Add.
Unlike previous attempts at this, our use of ExternalProject_Add
does not include any magic sauce. We do have a macro, but
it only forwards specific variables that we want to propagate.
We also only use ExternalProject_Add once. Meaning, all of
the cross compiled components are only cross compiled in a
single step, allowing the PAL and BSL to still use FetchConent,
and there is no dependency magic, or prefix magic. EPA is
only used to provide the cross compiled components with
their own toolchain file which describes how to perform the
cross compilation.