Feature requirements are:
- A client sends a task request via HTTP endpoint, and such requests can be multiple and sent with concurrency.
- The server generates a task ID for each request.
- The server serialize requests into an apply wait queue with the task ID.
- The applier receives the requested task from the queue.
- The applier applies the task, and trigger complete event to notify the server.
- The server responds to the client request via HTTP.
This is basically how etcd server works.
See rust-lang/wg-async#209 for more discussions.
See #1 for clean-up changes.