Improve reporting of validation errors

This extends the validation framework to pass the context of the current
attribute through the system, and report using it.  This means that we will
see messages like "broker.name must refer to an ..." rather than "name must
refer to an ..." emitted.

That should help much more effectively understand where the problem was
located, rather than guessing at one of the many identically named attributes
it could possibly match.

https://tickets.puppetlabs.com/browse/RAZOR-191

Signed-off-by: Daniel Pittman <daniel@rimspace.net>