On OS X, automatically unload the FTDI kext and reload it on exit.

On OS X, the FTDI kext will prevent `ftdi_usb_open_desc_index()` from executing properly. This patch fixes this by detecting this case and automatically unloading the kext. Reloading the kext at exit is literally handled using `atexit()`. These changes are protected from affecting other platforms via a `#if __APPLE__` block.

This patch also improves the quality of error messages by printing the human-readable description of the FTDI error.