Manually applied Rotation handling patch and Key forwarding update

Added support for SVMP ROTATION_CHANGED broadcast messages.
Added new code for keyboard device injection, now receives
messages from svmpd and creates/destroys virtual input devices.
Simplified SVMP hooks' broadcast receivers, now utilize
SVMP_BROADCAST permission when sending/receiving broadcasts
as appropriate.
Removed some unnecessary protected broadcasts.
Fixed notification broadcast issue where user notifications would
not get properly sent.
Added more comments to clarify where SVMP hooks are.