Added `Properties` Abstraction

This PR introduces a utility module. The intent is to have general purpose helpers be exposed by this module.

The first helper added is ```setValue```. It is pass an object, a property name, and the value to set. It returns an object with a restore function. This is useful in testing and will be used in the ```Environment``` class in a separate PR.
This is no longer consistent.