reimplement as subclass of ActionDispatch::Static

* there was a lot of copy-pasted code from ActionDispatch::Static
* now the code is smaller and smaller is good
* if other behavior or api changes with ActionDispatch::Static, this class will automatically get it
* an actual clear use case for inheritance, yay!
* as such, maybe easier for ActionDispatch::Static maintainers to grok and to consider for integration of features upstream

minor todo/problem: tighter lockdown of version dependencies for actionpack? (both min and max versions).

What do you think?