Resolve #47 - Refactor and improve the implementation of the Service Layer

This is a non-backwards-compatible change.  In the end, the original description
of #47 has not been accomplished, since it was decided that it was the wrong
thing to do.  Instead several improvements have been made though.

* Remove some unneeded/obsolete types, doing away with:
* * The IResponse interface
* * The IRequestHandler`2 interface

* Remove numerous obsolete methods from IRequestDispatcher interface and
  implementing types.

* Remove concept of pre-built handler types within the LocalRequestDispatcher,
  replacing it with handler factories, so that all request handlers may be
  constructed and disposed of to-order.  This makes the architecture far more
  Dependency Injection-friendly.

* Improve robustness of LocalRequestDispatcher handler methods, throwing more
  appropriate exceptions where needed.

* Rename RequestHandlerBase to simply RequestHandler, also split this into two
  types - one that can handle requests with responses and another that handles
  requests which never return a response.

* Large refactoring of RequestDispatcherBase - mainly concentrated on the
  registration of and searching for request handler types.

* Mark RequestExtensions as obsolete.

* Mark the Response type as abstract and refactor.

* Add stub assembly containing requests, responses and handlers (to test
  assembly-scanning).

* Update many unit tests to work with new API.