Due to the discussion on 4a7ec44, slightly tweaked the signature of send(OUT data) to return a Promise<Void>.

Returning Promise<Boolean> was slightly confusing because a successful send would complete the Promise with true, but an unsuccessful send would complete the Promise with an error instead of false. Completing the Promise with Void now makes the intent clear: you're not going to get a return value from a send, just be notified of success or failure via the Promise.

Since the Promise *is* an onComplete handler, there's no need to have another method for send(OUT data, Deferred onComplete). Removed that method from the interface and placed it on the Abstract class as a protected method for internal use.

Also added a sendAndForget(OUT data) variant which naively publishes data on the channel with no Promise being created to monitor the success/failure. This version of the method is really intended for situations where errors are already being handled via a call to when(Class<Throwable>, Consumer<Throwable>) and the overhead of creating new Promises for each send would be too high. The sendAndForget method is meant to be very lightweight in situations where you might be issuing a large number of sends very quickly.
Addresses PR #196. Makes sure Promise is only completed once, either for failure or success.
Added some helper methods for creating Reactors.
Added an ExpressionSelector implementation which uses SpEL to match selection keys.

An existing EvaluationContext can be reused with the ExpressionSelectors created, or some helper methods exist to create a default one for you. One can also pass the helper method a BeanFactory and have all the beans available in that BeanFactory available to the Selectors to aid in matching.

The test demonstrates how to use it, but basically it goes something like:

    reactor.on(E("name == 'Match This!'"), new Consumer<Event<?>>() {
      public void accept(Event<?> ev) {
        // The bean is my key
        Bean b = (Bean)ev.getKey();
        String name = b.getName();
        ... etc...
      }
    });
    reactor.notify(new Bean("Match This!"));

It's not necessary to pass the bean as the data in an Event, though that might be preferable for clarity's sake.
Upgrade to netty 4.0.11.Final
Merge pull request #198 from daschl/netty-upgrade

Upgrade to netty 4.0.11.Final
Add async logging to reactor-tcp tests.
Add notifyError method.
Tweak how certain exceptions are handled in the ChannelInboundHandler.
Default to async logging in the tests.
For sendAndReceive, remove the internal response Queue mechanism and replace it with an anonymous Selector/key combo.

Using a Queue was exhibiting undesirable memory usage and GC side-effects so the Queue was removed and replaced with a simple anonymous Selector that is bound in the scope of a send request. The cancelAfterUse flag is set as well so it will clean up after itself when it has processed the next response from the peer.
Fixes #199. Adds a close() method to the PersistentQueue class which calls the underlying QueuePersistor's close() method.
Use the shorter helper method for Promises.
Tweaks and cleanup and adding a test for HTTP support.
Fix ./gradlew eclipse

Running ./gradlew eclipse was failing due to ide.gradle assuming that
SourceFolder's will always have an output. Apparently, this isn't
the case.

This commit makes ide.gradle a little more defensive by using Groovy's
safe navigation to cope with a null output on a SourceFolder.
Merge pull request #202 from wilkinsona/fix-gradlew-eclipse

Fix ./gradlew eclipse
Update copyright and class-level javadoc for SocketUtils.
Merge branch 'master' of https://github.com/reactor/reactor

Conflicts:
	gradle/ide.gradle