Added interface DualCommand2 which is to replace interface DualCommand.
DualCommand2 is more functional in nature. Instead of being able to
execute forward and execute backward, a DualCommand2 return an
antagonistic DualCommand2 when executed.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>