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.