This plan describes the plan alluded to in comments of #5152 to improve the web resource model.
The problems:
1. No streaming uploads.
1. No Deferred support in render(), and adding it wouldn't be backwards compatible.
1. getChild makes it hard to conume multiple path segments at once. The current API also assumes the body is present (see problem 1).
The solution is a new resource model, re-using the existing HTTP server. Old resources will be able to be children of new resources. A series of tickets will do the following:
1. Minimal new resource traversal API (#5379). Traversal will not have access to body. The current proposal is a (hopefully) improved version of the `locateChild` API used in nevow and web2.
1. Add support for streaming bodies.
At that point a whole bunch of improvements can be done in parallel:
* render_GET etc. dispatch, maybe OPTIONS as well.
* Parsing POSTed forms, including file uploads. Web2 has a bunch of code we can hopefully re-use for this.
* Update the documentation.
* Compatibility with old resource model.
The hope is that having smaller tickets will allow ongoing reviews feature by feature.