New device object acts as a proxy to the current device, returning a
dummy object that ignores everything done to it if the device doesn't
implement that functionality - removed build() and insert_device_code()
- like this it's easier to add new functionality to devices