Added a simple travis file

Adds build compatibility with Travis CI
Merge branch 'testing/travis-compat' into dev
Rename action conversion to "compilation"

This is a more accurate reflection of reality that makes everything easier to
understand. Also added an very barebones API package. Provides minimal tooling
for describing Blocks and their compilation targets for future usage.
Renamed "src" package to "salve"

Although this touches almost every file in the codebase, the change itself was
very small in every location -- simply replace the string "src" with "salve".
This leads to much more readable names like "salve.util..." rather than
"src.util..."
Fix travis.yml to point at salve, not src
Switched to OOP logging infrastructure

Logging is now done with a global Logger object, and the execution context it
works with is also global. Moves towards the possibility of exposing logging as
part of the SALVE API. Tests are failing due to I/O changes.
Began fixing the tests to mock the logger instead of trying to mock stderr &c.
By so doing, output control becomes much easier. As a mild requirement, means
that the logger must not be included with a `from` import in order for test
mocking to be simple.
Finish Unit Test fixes (not E2E tests)

Includes a small fix for logger printing involving unicode conversion (to pacify
all pythons).
In most cases, involved putting unit tests into a scratchdir. Although it
induces some extra directory creations and deletions, for the most part the gain
in uniformity is worth it.
Finished fixing E2E tests

Involved numerous fixes to stderr mocking, handling of the exec context, and
expected error messages for cases in which the StreamContext has been dropped.
Removed SALVEContext type

Involved transitioning all uses of SALVE Contexts to either raw FileContexts
(renaming of StreamContexts) or the global exec context. Since they were
already using the global exec context under the hood, this is no change.
Includes fixes for all related tests. Notable fixes for the settings tests:
previous mocking of the whole os.path module replaced with mocking for
individual method mocking. Without this, unforseen calls to os.path functions
return mock results, which then behave incorrectly.
Merge branch 'refactor/global-state' into dev
Fixed octal ints in tests

Many octal ints were specified like 0777 instead of 0o777, which is the new
preferred way for handling octal literals.
Fix exceptions for Python3

Replace usage of StandardError with Exception

StandardError is no longer supported as of 3.3, so we should just use
Exception. Clearer semantically anyway.
"Type, varname" is no longer valid for an except block. Py3 requires that this
is done using "as" -- fixed in one location.
Replace StringIO module with io

Needed to import unicode_literals before argparse in order for it to work
correctly when stderr is mocked with an io.StringIO
Fix for py3 compatible ConfigParser import

Try to import the py3 version, and catch an ImportError with an aliased import
of the py2 version.
Change from xrange() to range()

Doesn't much matter for this in terms of performance, and xrange is gone in
py3.
Made builtins mocking in tests Python3 compatible

Uses an import try-catch to determine the correct name for the builtins module.
Fix handling of strings for Python3

Switched use of string.letters to string.ascii_letters
Fixing logging with print(unicode(...)) requires some hackery of the "Are we
python 3?" variety. Basically, if unicode is not defined, we must be in
Python3, so redefine it as the desirable function.
Updates to hashing to make explicit calls to encode()
Recovered test coverage.

Remove some py2/3 compat code from coverage and added one test.
Any try/except import handling for compatibility should be excluded from
coverage, as there won't be any given run of the tests that explores both
codepaths. Coverage is still desired across python versions, but it's hard to
enforce that programmatically, and impossible with nose's coverage plugin.
Added py 3.2 to Travis file
Merge branch 'bugfix/py3-compat' into dev
Update version to 2.2.0

Includes the addition of a coverage badge and an attempt at adding a coveralls
callout.