Refactoring shell to promote scalability and simplicity

Refactoring polymorphic in choosing the command to run. An abstract parent class that manages the executable behavior of the command is added. Command classes overwriting the executable method from abstract parent class.
Hi @haoyuan,  is already attached but not control more spaces. I have corrected the style in this class.