Switch to hidapi

Somewhere through the years, the clever hack of just simply reading from a file handle and looking for changed bytes no longer works.  This required a redesign, and we now depend on hidapi (libhidapi).