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.
Ruby defines #inspect this way:
turns a string containing a human-readable representation of obj. By default, show the class name and the list of the instance variables and their values (by calling inspect on each of them). User defined classes should override this method to make better representation of obj. When overriding this method, it should return a string whose encoding is compatible with the default external encoding.

It defines #to_s this way:
Returns a string representing obj. The default to_s prints the object’s class and an encoding of the object id. As a special case, the top-level object that is the initial execution context of Ruby programs returns “main.”