update email templates to support multiple template engines

This PR takes the existing email.js and allows it to support multiple template engines.  You can see an example using handlebars at https://github.com/jdarling/kcsbd-keystone in the server.js and modles/enquires.js files.

Also introduces new Error types for common error types.  Probably should extend these into some of the callback error's, but for now this works well.

Working on a better solution for the problem of binding into models for model changes such as insert, update, edit, and delete.  That will be a completely different module as it completely breaks the current email solution.