Problem: clojure functional style server backend is wasteful and limits functionality

- several chained actions affecting the response weren't possible, only the last return value was used for response.
- replying send would always generate a new message instead of reusing the old one.

Solution:
- change api to have message as param that can be mutated via setters from codec
- pass mutable message from action to action. (since there's no concurrent access to message this should be fine)
- send mutated message instead of creating a new one