ndler for the CMake set() function in all varieties.

comes in three flavors:
set(<var> <value> [PARENT_SCOPE])
set(<var> <value> CACHE <type> <docstring> [FORCE])
set(ENV{<var>} <value>)

We don't support the ENV variant, and any uses of it will be ignored
silently. the other two variates are supported, with some caveats:
- we don't properly handle scoping, so calls to set() inside a
  function without PARENT_SCOPE set could incorrectly shadow the
  outer scope.
- We don't honor the type of CACHE arguments
N