Issue #2 part 1: Free entire device GROUP if initialization fails:

Introduce new 'free_group' function, modify 'detach_devblk' to use it and replace other calls to 'ret_devblk' in config.c logic to go through 'detach_devblk' instead to ensure all members of device groups are always freed (detached) should any one of them fail to initialize properly.
Issue #2 part 2: Detect log pipe closure to prevent hang @ exit:

Closes #2
Fix unexpected double spacing when CTCI-WIN debug messages are logged.
Fix 11+ years old TRUE "day one" return code bug in LCS device handler.
Minor channel.c editorial changes. (no change to functionality)
Change 'INLINE' to just inline, NOT forced inline:

It's not only unwise to try and outsmart the optimizer, but forcing functions to always be inlined often results in LESS efficient (slower) code due to increased instruction cache usage (due to code duplication at different addresses) as well as larger functions hindering the optimizer's ability to do its job.
Convert some macros into (inline) functions instead:

OBTAIN_INTLOCK, RELEASE_INTLOCK, WAKEUP_CPU, WAKEUP_CPU_MASK, WAKEUP_CPUS_MASK, QUEUE_IO_INTERRUPT, QUEUE_IO_INTERRUPT_QLOCKED, DEQUEUE_IO_INTERRUPT, DEQUEUE_IO_INTERRUPT_QLOCKED, UPDATE_IC_IOPENDING, UPDATE_IC_IOPENDING_QLOCKED, IS_CCW_IMMEDIATE.
Rename execute_ccw_chain exit macros and convert to inline functions.
Issue #28 fix: part 1 of 2:

Clear subchannel busy while the I/O interrupt queue is locked during queuing of the actual I/O interrupt. NOTE: this change alone does not resolve the issue but it put me on the right path to the eventual fix.
Issue #28 fix: part 2 of 2:

Fix execute_ccw_chain lock handling during final exit sequence where primary interrupt is being queued. THIS is what finally fixed things. Closes #28.
Add S/370 archmode channel I/O test and re-enable OPTION_SHARED_DEVICES.

(I'll let someone else create one for ESA-390 mode.) (Please?)