Build and unit test changes (squashed rebase)

Update Readme to reflect new building requirements

Update CMakeLists.txt to export an Interface Target
Update core-config.cmake to include the exported targets file

Move all compiler configuration information into tests/CMakeLists.txt
Add support in tests/CMakeLists.txt to download the Catch Framework

Update test-algorithm to use the Catch framework
Update test-any to use the Catch Framework
Update test-functional to use the Catch Framework
Update test-iterator to use the Catch Framework
Update test-type-traits to use the Catch Framework
Update test-optional to use the Catch Framework
Update test-utility to use the Catch Framework
Update test-variant to use the Catch Framework
Update test-memory to use the Catch Framework
Update test-numeric to Catch Framework
Update test-string to use the Catch Framework
Update test-range to use the Catch Framework

Fix undefined behavior in any component for small objects.
Fix any component to follow N4082's requirement that small objects be
  nothrow copyable (in this case, just nothrow copy constructible)

Silence several warnings generated via -Weverything under Clang
Silence several warnings from Clang concerning deprecated copy constructors
Silence several sign conversion warnings in basic_string_view
Silence "unneeded internal declarations" warning for tests.
Silence additional unimportant warnings
  These warnings shouldn't ever cause a wrap-around issue due to pointer
  math returning a signed integer type by default (whereas we want
  size_type to be unsigned). Basically if any kind of overflow were to
  happen it would do so way before we ever cast anything.
Fix typo in WARN_NO_INTERNAL_DECL in tests/CMakeLists.txt
Remove logging from ExternalProject_Add for Catch Framework
Remove unnecessary semi-colon in variant component.
Update documentation concerning MNMLSTC Core usage

Update CMakeLists.txt to follow a new style, as well as export build targets