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
Merge branch 'master' of github.com:signal11/usb_stack
README: Add section for examples and bootloader
bootloader: Add linker script for pic24fj32gb002

Generated from Signal 11 PIC24F Linker Script project revision:
    55daa411b7475b782612be996d2b91aaabff68d9
bootloader: Add config section for pic24fj32gb002
bootloader project: Add configuration for pic24fj32gb002
usb: Add transaction complete callbacks

Add OUT_TRANSACTION_CALLBACK and IN_TRANSACTION_COMPLETE_CALLBACK which
get called when a transaction completes on a non-zero endpoint.  This way
applications can be entirely interrupt-driven.
hid_mouse, unit_test, bootloader: Add transaction-complete callbacks

Add transaction complete callbacks to the test programs
usb, usb_microsoft: Add support for the WinUSB-related descriptors.

Windows will ask for string 0xee and if it's in the correct format,
Windows will use a field contained in it as a bRequest to request the
other Windows-specific descriptors.  See usb_microsoft.h for references
which contain further information.
unit_test: Add WinUSB support

Add WinUSB-related descriptors to the unit_test example.
docs: Add winusb.txt

Add winusb.txt which contains general information about WinUSB.