each command callback now requires one argument of type SerialCommand, which gets populated by the current ('this') object when invoked
made SerialCommand extend Print class so that callbacks can send data back to the encapsulated Stream object