Add a MacroCommand

The MacroCommand class is also a command, but holds a grouping of other commands in it's internal state. On execute, the execute method of the list of internal commands is called in succession.