Polish spec classes

The fields on the spec classes have been made private. The values that
are needed by subclasses are passed down to them via the configure
method.

The reactor method has been removed. It was previously on
DispatcherComponentSpec where it was used to configure the dispatcher.
The preferred mechanism is to use the dispatcher(Dispatcher) method
instead.

The reactor method was also used on EventRoutingComponentSpec where the
reactor, if any, that was specified was used for some complicated copy
constructor-like logic when creating a new Reactor. As shown by the
number of logic branches in the code for creating the event router,
figuring out the selection strategy, the converter to use, etc this
copying logic was very complicated, and therefore difficult to use and
understand. It has been removed in favour of the user making explicit
calls to the methods to specify event routing, converters, etc.

The link method on ReactorSpec now takes the reactor that is to be
linked as an argument, rather than setting a boolean flag. This makes it
more obvious that it's a reactor that is being linked.

Where methods and classes are not designed to be overridden they have
been declared final.

The javadoc still needs to be written/updated. This will be tackled
separately.

Fixes #123 and #125