host: All build output is placed in a single directory

All executables and libraries are now placed in a single "output" directory.
For Windows builds, third-party DLLs are copied into this directory.

This commit also moves some CFLAGS changes in the top-level CMakeLists.txt
down to where some other compiler flags are set up. (Non-functional change)
libbladeRF: Workaround for libusb_set_interface_alt_setting() issue in Windows

This addresses Issue #101, in which prevents FW 1.0 users from upgrading.
Merge branch 'master' of https://github.com/Nuand/bladeRF into build
libbladeRF: Host side fix for #107.

Setting the SPI flash interface is not required for reading.  Only for writing.  Turns out, if you try to set that interface twice then things do not go so well.

I am not 100% sure if this is just a host side fix for a firmware issue, but it alleviates the problem for now.

Also fixed some tabs that snuck in there.
libbladeRF, bladeRF-flash: Added device identifier info matching to API routines

Initializing, extracting, and comparing device identifier information
(struct bladerf_devinfo) is now exposed through the API. Among other
things, this allow users to check if a device specifier string matches a
device they already have a handle for.

To support this, a copy of bladerf_devinfo information is now kept around in
the device handle; backends are responsible for populating this in their
open() implementation. A couple of the fields were already present, so
this only adds a couple small variables worth of overhead.

Some re-arranging of the linux and libusb probe and open calls has been done
to achieve this. A few warnings and bugs were addressed in this process:

  - The Linux backend was attempting to fill in a serial number via
    a cached entry.

  - There was some potential for a read of an uninitialized portion
    of an otp buffer.

  - Missing serial # has been made non-fatal. (Some developers'
    device do not have serial numbers.)

Files associated with this functionality was moved from host/common
back into the library, which should now be used instead. bladeRF-flash
has been updated to use these new API functions.
cmake: Added check for libusb_get_version (github edit)

This function is used by libbladeRF. This check effectively ensures the library is >= 1.0.10.
libbladeRF: Fixed use of uninitialized data (libusb backend)

Fixed defect introduced in 9015bdbb5ca2336a94f41a8575c67e7862fa8073, where a device handle's device identifier information was being populated from a (most likely) uninitialized bladerf_devinfo, rather than the one fully populated by a call to lusb_get_devinfo().
Assorted fixes for problems found via USB30CV and USB20CV

 - Move and use interface numbers
 - Renumber USB_IF_CONFIG from 0 to 3
 - Introduced 0 alt-interface as a NULL interface
 - Fixed FS descriptor length
 - Implemented GET_STATUS, SET_FEATURE, CLEAR_FEATURE w.r.t. halting bulk streams
 - Added include guards for firmware_common/bladeRF.h
 - Changed guard on suspend/resume requests to key on glUsbConfiguration instead
   of glUsbAltInterface.  This is because suspend/resume requests are on
   interfaces, not endpoints.
 - Addresses github tickets #97, #98, #99
Merge pull request #106 from litghost/fx3_cleanup_v2

Assorted fixes for problems found via USB30CV and USB20CV
fx3_firmware: add SET_SEL (Select Exit Latency) handling
libbladeRF: Fixed # samples parameter on initial  TX callbacks (libusb backend)
fx3_firmware: speed up FPGA image bitflipping by using a lookup table

The bitflipping look takes about 180 instruction cycles to flip 1 byte. The new
method takes less than 5 clock cycles, making both images load times seem
almost instantenous. Further optimizations can be made by adding a Duff's
machine.
Updated CONTRIBUTORS file
[FX3/libbladeRF] Major refactoring of FX3 application

 - Split RF, FPGA load, and firmware methods into seperate .c files
 - Split several vendor requests to eliminate magic glEp0Idx and to allow
   for better error handling
   - Updated libbladeRF to use new vendor requests and properly check return
     code.
 - Changed glSpiPageSize from global to #define
 - Move OTP handling into firmware.c
 - Version bump

Conflicts:

	fx3_firmware/bladeRF.c
[libbladeRF] Removed incorrect free
[FX3/libbladeRF] Added explicit calibration cache
[FX3] Fixed end-point halt
[bladeRF-flash] Ignore failures in flashing or reseting, and just look for the bootloader
[bladeRF-flash] Changed messages to be less hostile when flashing a v1.2 board
[libbladeRF] Removed incorrect free