add HID module and return better error

This PR add an `HID` module that figures out wether we're passing in an App or User and  calls the appropriate method.

It also changes the erorr type from `RuntimeError` to `ArgumentError` when we pass in invalid hids.