Clarity changes to default middleware behavior

Just some small tweaks to improve code readability. I opted for some defensive aliasing because there are surely some projects out there depending on the `middleware()` method. Perhaps they can be removed in the next major release.

Let me know if the hash behavior change in 00b5098 is too presumptuous; I'll revert that part and add a test.
This comment is misleading. It suggests to the reader that this is only done for that purpose, when it is intended to provide users with the ability to dynamically initialize middleware arguments at build time, instead of earlier.