Improve some optionals.
Use optionals for parsers.

These are absent when disconnected, so use optional instead of null.

Left most of the calls as-is - if something assumed parser was
non-null before it assumes the optional is present now. Should be
easier to clean up later.
Fix tests.
Merge pull request #216 from csmith/master

Improve some optionals.