Draft: dix: when disabling a device, AttachDevice it to NULL
DisableDevice re-implements parts of AttachDevice but not all of it, leaving the device in a different state than if the device is floated. Importantly, the device's sprite is disabled which leads to miPointerGetPosition(disabled-device) crashing the server (see #1782 (closed)).
There's no need for these to be separate code paths - we can float a disabled device (for the purposes of sprite handling) and the associated memory will be freed once we call CloseDevice for it. And AttachDevice will also take care of recalculating the master device's buttons for us.
Closes #1782 (closed)