Add optional OSGi dependencies for reactor-core (fix reactor/reactor#219) & add slf4j-api 1.5.4 compatibility (fix reactor/reactor#220).
Add batchNotify on Observable - ensure that 1 selection happens for a given iterable group of event. Events will be dispatched once and preselected consumers will be invoked.
Add Composable.buffer to expose batchNotify (grouping events for a single dispatching)
Rename Composable split() to batch() and update ForEachAction to use batchNotify
Minor improvements over ArgumentConsumer that only takes 1 argument
Minor improvements over ActionUtils to browse a buffered stream
Use a Stream subclass when pre-filled values or batchSize set and use an internal BufferAction to  batchNotify() operations
Added a buffered test in ComposableThroughputTests
Only invoke CompleteConsumer once.
Remove flush selector and update flush methods to work as expected (BufferStream will batchNotify and Promise will run asynchronously the supplier)
Merge master and fix minor dispatcher issues
Merge master and fix minor dispatcher issues
Merge master and fix supplier dispatching on Promise
Fix Supplier exception handling
#241 #245 Adds a couple of constructor parameters to Reactor and a couple of methods to EventRoutingComponentSpec for specifying two types of error handlers and the Selector to be used as a default.

Error handlers are split into two different kinds: the dispatchErrorHandler is what is passed to the Dispatcher when dispatching events and will be called in case of an Exception being raised from calling a Consumer's accept method. The uncaughtErrorHandler, however, will be invoked whenever an error is reported on a Reactor using the notify(Exception.class, Event) method. This is useful for dealing with errors that occur outside this Reactor's Consumers (like in a TCP server or somesuch).

Also adds the ability to specify the Selector to use as a default in case that object needs to be reused in several places.

Sensible defaults are used if these additional parameters are null.
Merge pull request #221 from kctang/master

Add optional OSGi dependencies for reactor-core & slf4j-api 1.5.4 support.
Merge pull request #246 from reactor/enhancement-241-error-handlers

#241 #245 Adds a couple of constructor parameters to Reactor and a coupl...
#239 #248 Hopefully fixes the BufferOverflowException by growing the internal ByteBuffer by lengthFieldLength.

Also adds support for short (2) as a lengthFieldLength.
Minor typo fix.
The exposesNettyByteBuf() test must use a SynchronousDispatcher since we're reading from the Netty ByteBuf directly. That must take place in Netty's IO event loop thread and not in some other thread, which causes random failures due to doing out-of-band IO in reading from Netty's buffer.
Adds tests for Tcp Client and Tcp Server interactions:

* Server to client should be able to send muliple (1 to N) pojos
* Same goes to client-server interactions
Merge pull request #251 from head-thrash/master

Tests for TcpClient <--> TcpServer interactions
This presumably fixes Issue #248
Merge pull request #252 from head-thrash/master

This presumably fixes Issue #248
fix #254 Refactor Streams.defer(value) and Streams.defer(values) to returned a Stream rather than a Deferred, thus preventing fixed streams to be confused with Streams.defer()
Merge pull request #255 from reactor/enhancement-254-fixed-streams

fix #254 Refactor Streams.defer(value) and Streams.defer(values)
Added support for Kryo, Protocol Buffers, and Jackson JSON support based around a shared SerializationCodec.

The new abstract SerializationCodec handles writing type names into the Buffer so that any object can be read and written without registering any special handlers. It does this by encoding into the Buffer the length of the class name as an int, then the class name as bytes, then the actual bytes of the message. When decoding, the process is reversed and the class name is read from the Buffer so that that exact class type can be instantiated. Most serialization engines require a type to be efficient anyway, so the only thing needed in the Codec is to maintain the class name of the original object.
Added support for compression of data using either GZIP or Snappy.

We might also want to use a "deflate" compression scheme as well in case the client on the other end doesn't use GZIP.

The compression is implemented by subclassing a common CompressionCodec and configuring it's own particular variation on InputStream and OutputStream. These codecs require a delegate Codec to function. This makes them a little bit harder to configure since you have to nest your serialization codec with this compression codec, then wrap that with a framing codec like LengthFieldCodec. It wouldn't hurt to have a DSL or something to set this up.