remove cruft
more docstrings
satisfy pylint
remove error(), just raise
fix up functional tests relying on blank $HOME

Can't use PatchedModule to ensure that expanduser('~')
returns '' (and thus we default past the real HOME)
since we are out-of-process.
So using a spurious $HOME allows the real $HOME path to be avoided
instead of leaking into the test
(e.g. test failure because it looks at actual /home/sasha/.vexrc
instead of defaulting to the test stuff)
be paranoid about ve_base being a real path

The worst case here is that someone puts arbitrary shell junk
$WORKON_HOME, which is then propagated into ve_base, and
then replaced into the output of vex --shell-config, which output
is then evaluated by user's shell, doing whatever was in the shell
junk.

Instead of endlessly blacklisting characters which might indicate danger
(and missing malicious stuff that just avoids them)
we just make sure it's a directory path. This isn't a complete solution insofar
as it is possible to craft paths which could be evaluated stupidly,
this is also a concern up to the actual shell config snippets

in tests: patch out existence checks in tests of get_ve_base.
this allows get_ve_base to check for existence if it
wants to, without the tests failing because the paths
are actually fictitious
don't sub $WORKON_HOME with scary-looking paths

This is intended as defense-in-depth behind checks that the value of
WORKON_HOME is a real path; for example, it is remotely feasible
that a real path could be crafted which also does something stupid
when evaluated as part of the emitted shell snippet.

The whole issue is defense-in-depth behind whatever means
you are normally using to prevent things like 'EDITOR=rm',
if those fail you are in trouble anyway even without vex.

includes tests for the function which decides if strings look scary as paths;
these aren't exhaustive, they just provide a baseline.

scary_path explicitly works on bytestrings
version bump