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.
I can't remember why I did this, I remember starting by defining to_s and then changing it to inspect because something wasn't looking right in the console, but now I can't think why it would make a difference.