Fewer, more precise error messages for datatype mismatch

Per RAZOR-144: When a matching expression can yield multiple datatypes that are not allowed, multiple error messages were generated.  This changes the matcher to generate a single error message that includes the function name, the argument position, the accepted datatypes, and the not-allowed-but-possibly-provided datatypes.
Make `json_name_from_ruby` available in Object

We regularly need to present the user with a name for something they
submitted, for type checking and so forth.  Since this is so common, and
happens in so many places, it seems reasonable to have a single central method
to expose this translation capability to the world.

By design this should take everything -- classes, and instances -- and return
the correct string for the user.  Returned strings are not translated, since
these are technical terms, not internal jargon.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
REVISIT: Initial framework for validation DSL

This is not finished.  Among the shortfalls is this text, because I feel
uncreative enough today that this is challenging to write.

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