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've never been the kind of guy who balks at `while (true)` loops, but this loop seems like it would more concisely express program semantics if it looked like
```C++
executeImmediate = false;
while (! executeImmediate) {

}
return parseQuery(...);
```
But there's a lot of nuances to this code that I'm sure I'm not getting.