Validators

This PR addes a new DSL method to allow validation of values before setting them.
This can be useful to validate user input (via `ask`) or to check the certain values are valid (like paths should not contain spaces or other strange characters).

A default validation for the variable `application` is added to ensure a proper application name.

closes #1053
closes #1183

/cc @ain @koenpunt @leehambley 

Open for discussion and feedback (especially what a good default validation should do? raise? auto-fix?)
Maybe better to use `warn` instead of `puts` here?