in KeyboardController class:
- added a new hook, reportReaderFunction, to enable the client code to read raw incoming keybooard state reports (called from method new_data)
- added a new hook, modifiersChangedFunction, to enable the client code to be notified when modifiers state is changed but no key is pressed or released
- initialized all function pointers to zero in both KeyboardController constructors
- changed led state change behavior: leds are updated when keys are pressed, not when they are released, as with most keyboards (methods key_release and key_press)
- added hooks to be notified of key presses and key releases with oem codes instead of unicode codepoints (keyPressedRawFunction and keyReleasedRawFunction).