lib: fixed TranslateErrcode behaviour and API assumptions
Since it is not possible to directly translate every libusb error code
into a system error code, and since we go to pains to keep track of
the low level error code, there should be no need to hack in a fake
system error code if the API is correct.
Therefore, this patch changes the usb wrapper Init() call to return
true/false for success, instead of an error code, and allows the user
to pass in a pointer if he really needs to know the low level libusb
error code.
Exceptions (Usb::Error(int, msg)) still maintain the libusb/system error
code split, and still return 0 if unable to translate properly.