Implement SmartLifecycle rather than Lifecycle

Update BatchingMessageHandler and RingBufferChannel to implement
SmartLifecycle rather than Lifecycle. This ensures that their lifecycle
is managed as part of application context start and stop processing.

The start and stop methods have been improved to ensure that an already
started or stopped component is not started or stopped again.

The javadoc has been polished.
A RingBuffer-based TaskExecutor

An implementation of TaskExecutor that uses an LMAX Disruptor RingBuffer
to queue tasks that are awaiting execution. A single thread is used to
execute tasks. Provide a high performance non-blocking mechanism for
handing off execution of a task to another thread.