Device now has state and device wrappers use it. Still to do:
- update actors to use it and monitor the right thing when connecting and disconnecting
- can connect and disconnect return somethings simpler, or nothing at all?