trivia: formatting
clearly reject options in ambiguous position

less confusing way of rejecting apparent commands that start with -- and are
thus more likely to be options
complain about nonexistent arg to --config

but don't die just because ~/.vexrc doesn't exist
complain properly about abs path as venv name

This is a continuation of the issue with giving absolute pathnames
as the positional name of a virtualenv, NOT using --path.
It happens because os.path.join silently discards earlier
path segments when a later one was absolute.

There was an assert checking if ve_name == ve_path,
but users should never see this.

The assert was also erroneously catching the case where
you are sitting in $WORKON_HOME (e.g.: cd ~/.virtualenvs)
comment on why we parse vexrc so early
split out get_virtualenv_path
major reorg of main.py

split up main into many separate functions which may raise _Barf
main catches _Barf and writes to stderr
instead of emit_shell_config getting a stream, just write from main.py
ve_base always returns string

defaults to '' instead of None
verify self.venv.path is an absolute path
very basic tests on --shell-config
change name of barf, use specific exceptions for specific things
test catchup
add a test for a nonexistent cwd argument
switch print to crude logging in test_basic

for now I don't expect to import this from elsewhere
more docstring/comment in test_basic explaining intentions
test trivia
restore reasonable behavior when run without args
better complaint for unknown --shell-config arg
shorten a message
find a home directory in windows

actually expanduser is using $HOME anyway where that is sensible