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, somehow the "Indentation" rule is not there =(

I will submit update to the checkstyle rules.