Eng 7325 sqlcmd refactor squashed

This is intended to be a bug-for-bug compatible refactoring of SQLCommand.java, setting up for future changes including ENG 7325 dynamic setting of error handling.
It standardizes most if not all the coding style in SQLCommand.java.
It more cleanly splits out interactive input processing from non-interactive input processing and execution of directives.
It simplifies one test API and eliminates some dead test code.
It adds lots of TODO hints about known issues.
I couldn't quite convince myself that this was dead code in the interactive case. An empty line returns an empty string, so it's not that. I suspect that it MAY be how ^D at the start of a line signals an exit. I'll verify that and add a comment.