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
What does an executor do? What makes it more helpful than just having the CliCommand class run the command itself?