BUG: Fixes issue with haptic device destructor
Previously the instance of the haptic device might have been in the middle of processing a callback as the destructor gets exectued, calling hdUnschedule should prevent this
Also defers posting of the button events to the update call to prevent another process from holding up the callback
Edited by Andrew Wilson