Added default attributes to block expansion.

Default attrs are a like globals, but have the lowest possible precedence,
and are therefore useful for setting default values.
This is the behavior that used to be provided by 'common' attrs in earlier
versions of SALVE.
Merge branch 'feature/default-attrs' into dev
Add ExecutionContext; converted Contexts to a unified SALVEContext.

Migrated backup globals into exec context, Stream and Exec contexts are held
in a SALVEContext. Backup globals are no longer expanded into blocks, but put
directly into actions via the execution context. All actions carry a SALVEContext
which includes the relevant ExecutionContext.
Error changes: rather than just printing the StreamContext, print the entire
SALVEContext. This just means printing the phase as well as StreamContext.
Included is normalizing paths in errors.
Execution context changes between phases as a SALVE execution runs.
Unfortunately, some steps are muddled at present -- like verification
and execution of actions.
Added context unit tests.

Progress towards test coverage. Includes some running repairs to other
unit tests.
Merge branch 'feature/execution-context' into dev
Added settings for log levels and util for run logging.

Replaces all prints not directed at files with uses of the new log utility.
Fixes for scratch containers to include logging settings, does not set WARN
or INFO in order to keep tight control of messages.
Addition of INFO logging for phase transitions. Some tweaks were needed to
correctly set log levels during unit tests. Induces some DRY violations in
the test suite.
Added exception handling for ini parsing failures.

SALVE now accurately reports the results of a parsing failure.
There is no logging before log_level is set.

Also, suppressed INFO output during tests.
There was an instance of logging taking place during config loading
as a result of state transitioning. Since the distinction between
"STARTUP" and "CONFIG_LOADING" is not particularly large right now,
the simple solution is to remove the CONFIG_LOADING state.
Added a verbosity setting and defaults for globals.

Although sensible defaults are specified through the default_settings.ini file,
these are exposed directly to the user for modification. It is safer, therefore,
for there to be a set of "true" defaults underlying these, which are set when
values are not specified.
Added min_verbosity constraint to INFO logging. Verbosity levels are adjustable
and modify which messages are seen.
Merge branch 'feature/log-control' into dev
Fix to scratch container for uid/gid

Replaces mock gid and uid with  mocking that makes lookups always return
the real values. This means that comparisons against the filesystem
properties (os.stat) within the scratch container always verify
correctly. Another layer of mocking is required to test failure, or such
testing should be done outside of a scratch container.
Improvements to testing coverage.

Add default verification code check to ensure that when not overloaded, the
verification code is always 'OK'. Backup test coverage, start on file/dir copy
and create test coverage.
Better output mocking
Need to patch the default 'run_log' location in addition to sys.stderr
Without this patch, sys.stderr is bound in src.settings.default_globals inside
of the defaults dict before the mocking is put in place.
Added E2E symlink testing, minor symlink bugfix

Adds first E2E tests for symlinks, specifically adds symlink copy testing. This
test identified an issue with file copy verification, which can fail by reading
the permissions of a link target, rather than the link itself. To correctly
handle this case, every file copied should be explicitly tested for link status.
Complete testing of modify and file/dir actions

Final functions focusing on testing of the configuration code are now complete,
giving 100% code coverage.
Merge branch 'testing/2.1.0-completion' into dev
Converted src tree to be PEP8 compliant

Included the revelation of an untested codepath in src.util.locations and the
addition of the necessary tests, some "pragma: no cover" for a couple of
corner cases that were originally marked as "no cover" on a single line.
Converted all unit tests to be PEP8 compliant.
Converted E2E tests to PEP8

Completes unit test conversion.
Merge branch 'refactor/pep8-compliance' into dev
Fixed readme links, changelog, and roadmap for 2.1.0 release.
Updated 2.1.0 changelog in README

Changelog for 2.1.0 now includes notes about code coverage and PEP8 compliance.
Also fixed formatting and markdown syntax to accomodate md parsing rules in most
syntax highlighters (which breakdown when "```" is used inline)