Moved settings into lib, config loader cleanup

settings no longer will attempt to load a list of manifests specified
in the ini file, and will no longer search for a default ini file in
the /etc directory.
Added handling of sudo execution to settings by means of a copy of the
environment in which $USER is overwritten.
Added settings test module, rewrote settings imports

This adds the settings_test module with a basic test functions using
Mocks to generate a falsified version of the os module. This is the
first set of tests that relies on Mocks, but it must do so in order for
the tests to work independently of the existing local user accounts.

The os imports inside of the settings module were sometimes deeply
nested inside of functions and classes. This makes correctly mocking
them extremely difficult, which overall makes testing a pain. Now the
imports are at the outermost level, in the form of "import os", and
all of the mocking targets mocking specific attributes of the os
module.

Switched settings.py out of executable mode so that nosetests will run.
Separated tests from code, added tests requirements.txt

We used to keep all of the code and tests together in the same
directories. This makes actually reading through any body of code or
tests more difficult because you have an added burden of parsing
filenames for "_test" and correctly identifying the relevant elements.
In the interests of the long term health of the project, the tests are
being moved into a directory of their own, which in turn allows for
an easier separation of code from the testsuite in the future.
Expansion of settings tests, fixes for discovered bugs.

Improves handling for a set of active patches during a test.
Complete code coverage in settings under new tests.

Fixes a naming ambiguity in settings
Because a salve config object is itself configuration, the "conf"
attribute has unclear semantics. That dict has been renamed to
"attributes", and they are the attributes of the configuration -- as
distinct from the environment created by the configuration object.
Although the environment could be folded together with the attributes,
we do not do so to avoid potential naming conflicts, and to simplify
the string templating actions.
Merge branch 'feature/settings-tests'