refactored so that http requests are kept open until the result is available

This simplifies the design a lot.
Advantages:
* the chain node only needs one method ('/request')
* the chain node doesn't need to remember information per chain for routing messages back where they came from
* the originator doesn't need a webserver
* the originator doesn't need to remember information per chain for matching responses to prior requests
* we get an automatic request timeout for free
* errors can in every case be routed back to the originator
* we can run the originator outside of amazon AWS
Disadvantages:
* someone may say the system is less scalable as we allocate resources to the delayed requests. However, we would have to manage that information in our own code instead of letting the server do it. Not a real downside
* can't think of any more
removed unused code
added error handling and backpropagation through the chain

A problem remains, though: when an error occurs in the @Async annotated methods, the framework swallows the exception
refactored asynchronous calls for request forwarding

async calls now handle all exceptions, build an error message and send the error message back through the chain
would close #25 if we decide that keeping http requests open is better than using separate requests for request and response messages
Merge client.properties fix
sanitized log output

closes #40
Merge branch 'test-deferred-result'