[RFC] First draft of plugin interface design

@csavage-mdsol @sheavalentine-mdsol please review (not now. when you're actually at work).
As discussed offline, I am attached to the idea of arbitrary middleware ordering.  As for types, I think the most likely ordering conflicts may occur in things that would otherwise share a type.  

As for solutions:  ¯\_(ツ)_/¯

What if we had a disable all automatic registration instead of just individually and go manual for adding them back, maintaining the order?  Seems MVPish.  That plus insert_before and insert_after may would be a more complete solution I think.