Refactor to improve extensibility, reduce coupling and more.
Add ability to validate requests prior to generating images.
Add improved error handling, including a new error page.