Use an explicit context to initialize libusb 1.x. closes #20

When combining PyUSB with another module that makes use of libusb, we
may end up with a double free inside libusb_exit, or a application hang.

We now use an explicit context object when initializing and exiting the
libusb library to avoid this problem.
Avoid deadlock by import lock. closes #7.

Move up the import of USBError to avoid deadlocks in multithreading
applications.
Avoid destroy the _lib object before libusb is deinitialized. closes #23.

As both the _init and _lib objects inside the libusb1 backend are global
objects, _lib maybe destroyed before _init, causing an error on exit.

So, we add a reference to _lib inside _init to ensure correct destroying
order.