zvsh: don't nuke working dirs when saving rt files

If the user specifies a save dir for the runtime files (manifest,
nvram, etc.), don't nuke the entire directory! The original intention of
this was to ensure that the runtime files do not overwrite existing
files, but this is a destructive approach (and could result in the some
serious damage to the user's system). When I first encountered this bug,
I lost an entire git clone directory; luckily it was backed up a remote
repo, but I hope the risk here is clear.

So instead of nuking the directory, this change simply checks if the
runtime files we expect to create (nvram.1, manifest.1, etc.) exist. If
any exist, we halt. Otherwise, we continue writing to the target save
directory, whether it is empty or not.

The behavior when no save dir is specified does not change; we still
will create and cleanup a tempdir in this case.
Merge pull request #37 from larsbutler/dont-nuke-working-dirs

zvsh: don't nuke working dirs when saving rt files
add better return code handling

when there is a signal in untrusted code, the return code from the session is invalid
in that case we need to somehow pass zerovm return code outside
the common way of passing several return codes in one byte is by doing bitwise `or` into actual byte
this is what was implemented as a default behaviour
add support for `/dev/self`

ZRT and other libraries can use the nexe image binary file for some of their features
for example, to know the addresses of functions or to load some functions dynamically
we map the binary to a special device `/dev/self`, can be considered a ZeroVM ABI
the patch adds support for `/dev/self` channel into zvsh-generated manifests
Merge pull request #40 from pkit/rc

add better return code handling
Merge pull request #41 from pkit/dev_self

add support for `/dev/self`
zvshlib: add __version__ var to package
setup: Use __version__ var from zvshlib package
doc: bootstrap sphinx documentation
tox: add doc build to default configuration
move hardcoded strings to constants

move hardcoded default names of executables and options to a module level constants
wrap main zvsh code into class

in preparation for test framework we need to wrap zvsh main flow into class
then we can easily monkey_patch or mock it for tests
Merge pull request #42 from pkit/refactor

Refactor zvsh
Merge pull request #43 from larsbutler/bootstrap-sphinx-docs

Bootstrap sphinx docs