spaces
comment adjustment
move make_fake_exists into fakes

and test it in test_fakes
explain _main better in its docstring/comments
simplify exception handling in main
move exceptions from main.py to their own module

This lets implementation of routines for use in _main move out to other
modules, without circular imports between these modules and main

also adapt test_main to exceptions change
reorganization in _main to prepare for --make
push handle_shell_config into shell_config.py

also change signature and adapt how it's called
move option parsing into new options.py
move run exceptions into exceptions module

also BadConfigError -> BadConfig to match everything else
and adapt test_run
add parser group for --make
--make exceptions
implement --make
adapt bash completion for -m/--make (really --python only)
adapt zsh completion for -m/--make
adapt fish completion for -m/--make
functional test for --make