Pick up middleware from plugins

Implements the plugin interface as far as the middleware bit is concerned. Assumes everything is in HTTP world. The new specs pass, I'm getting a few failures on old specs due to the test service returning blank 200 responses every so often but I'm pretty sure that's not my code's fault.

If anybody knows the actual name for what I'm trying to do with PartiallyOrderedList (constraint satisfaction?) there's probably a better algorithm/gem out there for it.
@csavage-mdsol convinced me that that API is bad/too limited. `insert_after(Foo, Bar)` couples Foo and Bar.

Larger point is that these aren't going to be just middleware, see design goals [here](https://github.com/mdsol/farscape/blob/feature/plugins_implementation/WRITING_PLUGINS.md).