Experimental specification for controllers: let them return a Future or Future<String> so that errors and forwarding can be handled asynchronously

The most interesting thing is handling error with .completeWithError() which allows catching any error unhanded in the controller and send a 500 response.