Added the ability to explicitly declare config envvars

old profiles are supported which still load the entire environment,
this is disabled as soon as you define an 'environment:' section.

eg.
--snip--
ocio_profile_version: 1
environment:
  SHOW: super
  SHOT: test
  SEQ: foo
  test: bar${cheese}
  cheese: chedder
...
--snip--

ABI Changes:
- added Config::addEnvironmentVar(const char * name, const char * defaultValue)
- added Config::getNumEnvironmentVars()
- added Config::getEnvironmentVarNameByIndex(int index)
- added Config::getEnvironmentVarDefault(const char * name)
- added Config::clearEnvironmentVars()
- added EnvironmentMode enum
- added EnvironmentModeToString(EnvironmentMode mode)
- added EnvironmentModeFromString(const char * s)
- added Context::clearStringVars()
- added Context::setEnvironmentMode(EnvironmentMode mode)
- added Context::getEnvironmentMode()

* renamed ENV_ENVIRONMENT_UPDATE to ENV_ENVIRONMENT_LOAD_PREDEFINED
* updated debug output when a 'environment:' section is not defined
* added Environment Mode to the Context cache (updated tests to match)
* added pythonic config.getEnvironmentVarDefaults() which returns a dict
* added CreatePyDictFromStringMap() to PyUtill
* added test_is_editable to Config python unit test
* python test suite now returns a error return code when a test fails to work with ctest