remove print
Separate Promise constructors for deferred, value, supplier, and error

Previously, Promise had a single constructor that took a value, a
supplier of a value, and an error. The requirement was that all three
values be null, or only one of them be non-null.

To enforce this requirement the constructor has been replaced with
four separate constructors. One that takes none of the arguments, and
one for each of the three arguments thereby ensuring the callers can
only set none of them or one of them.

The ability to set a parent on a promise that has already been
fulfilled has been removed. The parent was provided so that the
parent's outcome could influence the new promise's outcome. Given
that, in the case of an already fulfilled promise, the outcome is
already known providing a parent did not make sense.

Fixes #124
Improve failure diagnostics in TcpClientTests

If the latch isn't counted down within the time limit, include details
of the messages that have been received thus far in the failure
output.
Updated maven coordinates to `org.projectreactor` to reflect the new domain that is required for acceptance into Maven Central.
Polish Headers. Improve handling of null values

Headers now uses a TreeMap to store the Headers, ordered with
String's CASE_INSENSITIVE_ORDER comparater to provide case-insensitive
matching of header names. This addresses the problem of calling
toLowerCase on potentially null header names and also provides robust
case-insenstive comparison. Fixes #119.

The handling of null values has been clarified. Setting a header's
value to null will remove it. When working with a Map, either in
setAll or during construction, the same rule applies. Fixes #120

The behaviour of the Iterator has been made consistent. It now
iterates over an unmodifiable copy of the headers. The Iterator now
returns Tuple<String, String> for each header rather than
Map.Entry<String, String> so that the use of a map can be an
implementation detail. Fixes #118
Improve use of Assert.notNull

Polish a few of the messages. Replace use of Assert.notNull (which
throws an IllegalArgumentException) with code that throws an
IllegalStateException when it's some state that's being checked.

Fixes #108
Move selector creation methods onto new Selectors class

Previously the helper methods for creating Selectors were on the
reactor.function.Functions class. This wasn't the ideal place for
them as Selectors aren't necessarily related to a functional style of
programming.

The helper methods have been moved to a new class:
reactor.event.selector.Selectors. In addition to the existing very
short methods, longer more discoverable equivalents have been added:

public static Tuple2<Selector, Object> anonymous()
public static Tuple2<Selector, Object> $()

public static <T> Selector object(T obj)
public static <T> Selector $(T obj)

public static Selector regex(String regex)
public static Selector r(String regex)

public static Selector type(Class<?> supertype)
public static Selector t(Class<?> supertype)

public static Selector uri(String uriTemplate)
public static Selector u(String uriTemplate)

While the unconventional (and probably always controversial) $ method
remains, the other short-hand methods (R, T, U) have been lower-cased
to be somewhat more conventional.

Fixes #127
Remove Fn, P, R, and S alias classes

The Fn, P, R, and S classes are simple extensions of Functions,
Promises, Reactors, and Streams respectively. They exist solely to
provide shorter-named equivalents. There are two main problems with
this:

1. They are all in the same package, even though the classes that
   they extend are, quite rightly, spread across three separate
   packages
2. The names, while short, are not concise: they convey almost no
   meaning. If you're not familiar with Reactor you'll have no idea
   what the class is or does. Even if you are familiar, you may still
   be confused. For example is S short for Streams or Selectors?

The first problem could be addressed by moving the classes alongside
their longer, more informatively named equivalents. However, that
would not address the second more fundamental problem. This second
problem leads to code being hard to read unless you're intimately
familiar with the Reactor API. To avoid this problem, the alias
classes have been removed.

Fixes #129