Consistently include all headers as <avrpp/header.h>

Remove includes of the form "header.h".  This change ensures that all
headers get included from the installed build directory, rather than
from the source directory.

Including headers from both places was causing problems, as #pragma once
would not protect against including the "same" file from both the source
and build directories.
Refactor kbd_v2 main code

Add a Controller class to handle the initialization and loop logic.
In the future it should be possible to change kbd_v1 to share the
Controller code.
Add UsbController::StateCallback

This adds a StateCallback to the USB controller.  The controller now
monitors suspend and wake events, and notifies the callback of
suspend/wake/configure/unconfigure.

This also refactors the LED control code in kbd_v2 a bit more, to remove
all hardware-specific code from the Controller class.  This does remove
the idle blink pattern while waiting for USB to be configured, but it is
a bit more informative about when the configure event is received and
when suspend/wake happens.  (A suspend interrupt does appear to be
triggered briefly during initial configuration.)
Power down on USB suspend

Put the microcontroller into power down mode upon USB suspend.  We wake
up again when the USB wake up interrupt is received.