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