Start to support remote (slave) controllers, currently just for the switch() method. Generalise and share the check-for-device-then-do-thing method.