Add `AbstractCliCommand` Class

## As a developer I can extend `AbstractCliCommand` to easily create and run cli commands

### Acceptance Criteria
1. synapse-base has `CliCommand` namespace
1. `CliCommand` namespace has `AbstractCliCommand` class
1. `AbstractCliCommand` can be extended by just returning the base command to be executed
1. `AbstractCliCommand` is fully tested

### Tasks
- None

### Additional Notes
- Stole this from api.commandsynter.com. It works really well for setting up and executing commands on the server
The executor lets me inject a mock executor that I can use in tests. And gets the ugly parseOutput function out of the CliCommand class.