Actually close parser in AbstractCommandRunner.runCommand.

The parser resource was left unclosed. Using a try-with-statement to
automatically close it uses the close() method of the parser. The method
must be able to raise Exception since it's an implementation of the
method in AutoCloseable interface. Therefore, every place that called
this method directly or indirectly and raised an IOException (and did
not specifically handle Exception exceptions) needed to be changed to be
able to raise Exceptions instead of IOExceptions.