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