Adding abstraction for `Formatters` and refactoring post to hide implementation from engine

Post should handle the rendering of a single post
Engine should handle collecting all the information to render the site... Perhaps this should be refactored into `Site`