Add Validations Layer and Post Validations

closes #2893, issue #2850, issue #2856
- this is a stable, but quick and dirty validations layer for the time constraints
- this could be replaced with a unified server/client layer later. the infrastructure is there.
- create a validation engine mixin to match validators with models
- create a post validator with a small example
- override the save method in the mixin to perform validations first
- fixup calls to post.save() to make sure they catch errors properly

Currently the Post Validator only checks for an empty title. The framework is in place to add more checks/validators as time goes on.

Essentially, `model.save()` works exactly as it used to, but performs validation first and will reject the promise with any client-side *or* server-side validation errors.