[WIP] Refactor command model

Doing some followup refactoring on the command shorthands PR and adding some additional unit tests. Some of the methods needed to be broken up further so they were more testable. Will be giving `parseArgs` the same treatment as well.

Also adding jsdocs to the command model.
Not at all. Let me know if there are any other specific styles you'd like me to follow and I can go through and cleanup the test in this PR.