Merge major refactoring. [API changes]

  * The `usb.devices` array has been replaced by the `usb.getDevices()`
    function. If a device is plugged or unplugged after the `usb` module is
    loaded, a call to `getDevices()` will reflect the device list in its new
    state.

  * The `usb.getByIds(vid, pid)` convenience function was added.

  * Devices must be explicitly opened with `device.open()` before using
    interfaces, endpoints, or control transfers.

  * The arguments of the `device.controlTransfer` callback have been swapped
    to `(error, data)` to match Node conventions.

  * The arguments to the `inEndpoint.transfer` callback have been swapped to
    `(error, data)` to match Node conventions.

  * The `outEndpoint.transfer` callback signature has been changed to take
    only one argument, `error`. The always-null `data` argument has been
    removed.

  * The `device.interface(interfaceNo)` method only looks up an interface by
    its `bInterfaceNumber`. It no longer deals with alternate settings.

  * The `interface.setAltSetting(altsetting, callback)` method was added to
    set the alternate setting on an interface. It updates the
    `interface.endpoints` array to reflect the endpoints found in the
    alternate setting.

  * Endpoint and Interface descriptor properties are now on a dedicated object
    accessible through the `.descriptor` property, rather than properties of
    the Interface/Endpoint directly.

  * On OSX and Linux, transfer completions are no longer handled with a worker
    thread. Libusb's file descriptor polling is integrated directly into the
    Node/libuv event loop. Provision for a worker thread retained to enable a
    Windows port where file descriptor polling is not available.

  * The internal implementation of interface, endpoint, and stream objects
    have been largely moved from C++ to JS.

  * Support for building on Windows with MSVC10, and hopefully OSX