minorfix: remove extra semicolon
bitforce: Workaround broken/old compilers by setting device_fd outside of initialisation
Bugfix: configure: Report bitforce:pci instead of bitforce:uio
icarus: Defer initial open until init
icarus: probe_timeout setting to control how long we wait before giving up on probes
Rename icarus-common.h to driver-icarus.h
SSM: Split stratum work division into 2D work manager ("work2d")
Add pool_has_usable_swork function
Hide blktemplate_t behind bfg_tmpl_ref to abstract reference counter
GBT: Use libblkmaker 2D work to service SSM and potentially other 2D work drivers
Bugfix: lowl-vcom: Invalid fd checks should be for -1, not 0
Merge commit 'cd890dd' into bfgminer
Bugfix: lowl-vcom: _get_osfhandle failure returns INVALID_HANDLE_VALUE, not NULL
Merge commit 'bea5c42' into bfgminer
Drillbit: Add support for "protocol version 4", non-device-specific configuration packet format
Drillbit: Be strict about not accepting any boards with newer protocol versions. Protocol version bumps are non-backwards-compatible.
Drillbit: Keep reading work for as long as the device returns results.

The firmware protocol has the concept of returning up to "N" result
packets in a single query/response. However in testing this turned out
to be problematic (at least with cgminer) so it actually now only
returns 0 or 1 as the result count. This is the case for all released
Drillbit firmwares.

This means the preferred method for reading results is to immediately
keep checking for results until a zero response is seen. On a 64 ASIC
miniplane (8x Eight boards) this turned out to be important, as the
internal queue is only 32 results deep and it was losing results when
running at a 10ms poll interval.

As it happens the firmware will wait up to 100ms for any results
before returning a zero result count to the caller, so the protocol
itself builds in a certain amount of poll rate limiting (this is a bit
of a weird design decision, I know.)
Drillbit: Clarify use of device_data pointer to store capabilities/protocol version temporarily
Drillbit: Add upper and lower bounds to "Eight boards have a multiple of 8 ASICs" check
Add link to Node.js RPC wrapper