Move RecordableCommands into DynamoModel

Full description of this PR is here:
https://github.com/DynamoDS/Dynamo/issues/2497
Honestly saying I like not much using "if-else" or "switch-case" when we have many options because a code looks bulky. So I try to find another way.

But in this case I probably agree with your way because 
- many commands are with the same code to do in `CommandCompleted` and therefore we need to copy-paste method for them; 
- many commands are with no code to do in `CommandStarting` and therefore "switch-case" construction is not so big;
- I'm not a big fan of using an exception like here neither :)

Thanks @Benglin