Add "friendly_name" to all Razor::Data classes

This adds a method to all Razor::Data classes to return a friendly name for
the type.  This can be used to talk about the object in, for example, error
messages elsewhere.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
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>