unit_test: Fix compile warning about signed/unsigned
usb: Send zero-length packet only if returning less than requested

The previous implementation sent a ZLP if the transaction length was
divisible by the endpoint's max packet size.  A ZLP should be sent only if
both the transfer length is divisible by the endpoint's max packet size
and the device is returning fewer bytes than were requested in the setup
packet's wLength field.
usb: Split ep0_data_stage_buffer into in/out buffers

Split ep0_data_stage_buffer into:
	ep0_data_stage_in_buffer
	ep0_data_stage_out_buffer

The XC8 compiler has a problem with pointers which can point to both const
(flash memory) and non-const (RAM) data on the PIC16F (which later commits
will add support for).  The solution is to use two separate pointers for
control transfers, one for IN transfers and one for OUT transfers.
usb: Add support for PIC16F family and PIC16F1459 MCU

This only adds support in M-Stack itself, not in the test programs
unit_test: Add code for PIC16F family and PIC16F1459

This is the code (.c and .h) for the unit_test program.
unit_test project: Add configuration for PIC16F1459
unit_test project: Update XC8 compiler version

1.10 -> 1.12
unit_test: Add #error for MCU not supported
usb_hal: Add #error for architecture not supported
README: Add PIC16F family and PIC16F1459