config-cs: enable CONFIG_DEBUG_ATOMIC_SLEEP

Reveals that the USB callback is in an interrupt context and we therefore
can't just use GFP_KERNEL in atusb_in. Back to the drawing board ...
atusb.c: fix whitespace around ATUSB_BUILD_SIZE; explain what it is
atusb.c: reorganize driver to do sleepy things in a workqueue
atusb.c: rename "struct atusb_local" to "struct atusb"

No need to emphasize that it's device-specific ...
atusb.c: clean up (and correct) length checks in atusb_in
atusb.c: move content processing out of atusb_in, flattening the code
atusb.c (atusb_in_good): length 2 would actually be sort of okay

There's probably nothing preventing us from sending zero bytes plus
the CRC. So let the driver allow it.
atusb.c (atusb_xmit): use wait_for_completion_interruptible_timeout correctly

wait_for_completion_interruptible_timeout returns the remaining time,
so we can't just return what we got, since a non-zero return value
would be interpreted as a failure and cause a retransmission.