Refactor the options support for conrete classes

The concrete commands implemented so far used identical code
in their initializers and execute_on methods. This commit
refactors that code and moves it into the abstract SiteCommand
class, thus simplifying all the command implementations.