This allows the use of custom 'envelope' types like ActionResult<> with a corresponding API Explorer implementation. Basically this PR services to decouple a bunch of infrastructure from ActionResult<>.