Use consistent output dirs for build products

Set variables CMAKE_<TYPE>_OUTPUT_DIRECTORY to ensure all programs
(TYPE : RUNTIME), libraries (TYPE :LIBRARY) and archives (TYPE :
ARCHIVE) are output to a single location. Define the root for output
as 'BuildProducts' subdirectory of project's build directory. Use
paths set from GNUInstallDirs to set Runtime (bin), Library and
Archive (lib) paths so that layout of BuildProducts matches install
layout.

NOTE: For multiconfig generators like Xcode, each path will be appended
with the build mode, e.g. 'Release'. This will affect CetTest.

Add variable in CetTest module to indicate it has been loaded. Check
this at the start of module and return() if it is set. This ensures
test environment is not nuked when submodules include it, and also
provides a minor performance improvement.

Use cet_test_env() after top level inclusion of CetTest to set
default PATH for tests. Set to CMAKE_RUNTIME_OUTPUT_DIRECTORY plus
PATH from current user environment.

NOTE : it's this setting that's likely to fail for testing on Xcode.

Implement this way so that shell script based tests locate the programs
they wrap. Use of PATH is neccessary to not prevent use of system tools.
This is not completely guaranteed to provide an isolated test - the test
may still run if the PATH contains the program the shell script wraps.