Add Support for Direct to HW Buttons

There is some overhead in using the providers to send button presses so now let's provide a way for the providers to send messages direct to hardware such as IR devices when a button is pressed.
Fix missing scrolling support on remotes