Refactor user interfaces
This is some work to have a more proper way of defining user interfaces.
- Refactor batch daemon to not be a full UNIX daemon implementation
- Use module entrypoints instead of bin scripts
- Rewrite all command-line interfaces to use argparse.
This is based on top of the virtualenv
branch (see !4 (merged)).