Completely change the api

Rendering will be handled by a plugin now. The module is now a single function that accepts an array of arrays of plugins. It returns a promise.
5.0.0