The message population middleware builder is no longer tied to HTTP, instead providing a pluggable implementation of sources. The sources can declare "ownership" of properties which allows us to eliminate branches for things like JSON population if we know it's not possible for JSON to contribute anything useful.
In addition the route value code generation has been improved to write conversions directly to source, eliminating some method invocation overheads for "simple" types.
The message population middleware builder is no longer tied to HTTP, instead providing a pluggable implementation of sources. The sources can declare "ownership" of properties which allows us to eliminate branches for things like JSON population if we know it's not possible for JSON to contribute anything useful.
In addition the route value code generation has been improved to write conversions directly to source, eliminating some method invocation overheads for "simple" types.
Fixes #18