Expose middleware as a series of providers.

Such that each provider is a function that returns an array of middleware
functions. This allows for named sets of middleware functions that will
be loaded on demand.
0.1.1
Fix compiler module reference.
0.1.2
Update color middleware.
0.1.3