[kbd_v2] Update key mappings

Change the positions of the Volume and Alt keys, as well as the Right
GUI key.  Also fix the Scroll Lock key (previously reported as F14).
Also update the allowed maximums in the HID report descriptor so that
the volume and mute keys can be processed correctly.
[kbd_v2] Update descriptors, and allow disabling the debug interface

This renumbers the keyboard and debug endpoints (to 1 and 2), and also
adds a flag to disable the USB debug interface at build time.

The flag to disble the debug interface was mainly to use while testing
my keyboard with an IOGear (ATEN) KVM switch.  The KVM switch has a
number of issues which cause the debug interface not to work when
plugged into its keyboard port.

The KVM intercepts and proxies all USB traffic to the keyboard.  It
doesn't seem to reliably forward IN packets to the debug interface--I
can get one initial response, but nothing more after that.  It also
incorrectly forwards SET_REPORT packets for the debug interface to the
keyboard interface instead.
Add a Bitmap class

This class stores a fixed-size bitmap, whose size is known at compile
time.
Add an F_LOG_LEVEL() macro to set the per-file log level

This macro declares the file-static f_log_level variable.  It marks it
unused, to prevent compiler warnings when there aren't actually any
FLOG() statements in the file.  I occasionally find that during
development of new files I edit or temporarily remove the only FLOG()
statement, causing warnings if I don't also remove f_log_level.
[keyboard] Split Keyboard interface and implementation

Turn Keyboard into a pure interface class, and add a new KeyboardImpl
subclass for the implementation.  This will make it easier to test
alternative implementations.  (I'm testing some alternative ghosting
implementations for my v2 keyboard.  This makes it easier to change the
v2 code without disrupting the v1 implementation.)
[build] Update the SCons/staticlib.py to support cross-directory deps

Allow library dependencies to be specified as "<dir>:<name>" to depend
on libraries in other directories.
[kbd] Perform intelligent ghosting resolution when diodes are present

My v1 keyboard already has diodes on most of the modifier keys, and I
have added diodes on the shift keys for my v2 keyboard.

This updates the code to be aware of the diodes, and to perform more
intelligent ghosting decisions when the ghosting involves keys with
diodes.  When a diode is present we can usually tell if a detected key
press was a real press or just ghosting.