usb: Disable warning when no callbacks are used

XC8 on PIC16 would issue a warning about ep0_data_stage_callback never
being set to anything other than NULL.
usb: Clear ep0_data_stage_callback during reset_ep0_data_stage()

Since internal control transfer handling doesn't use a data stage
callback, there was a case where a callback in the application could be
called spuriously.  The case was when a standard control transfer was
initiated by the host after a control transfer handled by the application
was completed.
usb: Don't call ep0_data_stage_callback() if it's NULL

There was one case where it was not checked.
usb: Set callback and context before calling start_control_return()

This avoids a race condition which could cause the callback to not be
called.
usb: Handle banked addresses on PIC16

The USB buffer descriptors need linear addresses, but the XC8 compiler
will generate banked (not linear) addresses for the arrays in ep_buffers
if ep_buffers can fit within a single bank.  This isn't a problem when
large endpoints are used, but for small endpoint sizes, the compiler
generates the banked addresses, causing USB operations to fail.

Add a function to generate the linear addresses from the banked ones. This
function is fairly slow, but only needs to be executed at startup.
usb: Check bmRequestType for Get_Descriptor

Only treat Get_Descriptor as a standard request if bmRequestType matches
Table 9-3 in the USB 2.0 specification.

Get_Descriptor is overridden (with a different bmRequestType) for HID
interfaces (and likely other device classes).
usb, usb_ch9: Remove HID descriptor from usb_ch9.h

This will be re-added in the appropriate place with the rest of the HID
class.
usb_hid: Add support for the USB HID class

Add an implementation of the Human Interface Device class.
hid_mouse: HID mouse example

Add an example application for the HID class. This example is a mouse which
moves the cursor slowly left and right.
README: Add information about the HID class
README: Update to License section
README: Remove status section

It was a bit prejudicial about the state of the software.