Small optimisation with nested loops

It also makes the logic a bit clearer.
Bugfix: use configured EOF byte value when no input tape is supplied
Add docstrings to various objects
Expand list of possible string-typed boolean values