Add an inital pass at complete HID tables for Keyboard, ConsumerControl and
SystemControl
Addeed Mouse.moveAbs() to USB HID for absolute mouse positioning.
as requested in issue #1417.

All parameters have the range of -32768 to 32767 and must be scaled
to screen pixels some examples: x=0, y=0 is the middle of the screen
x=-32768, y=-32768 is the top left corner x=32767, y=-32768 is the
top right corner x=32767, y=32767 is the bottom right corner x=-32768,
y=32767 is the bottom left corner.

Based on commit 7b77d1e84d7b80819f049e5fd6e7bafa0d06521f from
https://github.com/arduino/Arduino/pull/1488

Code slightly massaged by Jesse Vincent to remove overzealous #ifdefs
A first cut of USB "Consumer Control" support
Add USB HID keyboard press and release variants that work with USB HID
Keyboard Keycodes. This makes it possible to send HID key events for
keys that don't appear on a traditional US 104 key keyboard.

This patch is a somewhat rototilled version of the patch linked below.
In particular, i dropped whitespacechanges from the original patch and
changed 0x01 and 0x00 in the code to 1 and 0 to better match the style
of the surrounding code.

Based on patch
https://github.com/weizenspreu/Arduino/commit/1ede2b8abd7c3b74ffc75f28da38b4acdc4817f2.patch
from Pull request 1391.
Switch to less confusingly named HID keyboard character defines.
Additionally, move to a complete list of all keyboard and keypad keycodes
transcribed from the HID specification.
Add IDE keyword highlighting for new USB HID APIs
Demo for the AbsoluteMouse API
Demo code for the ConsumerControl and SystemControl APIs
Enable Absolute Mouse support by default
Refactor the new rawKeycode API to be simpler and cleaner; add a
"write keycode" method for parity with the old API.