Provide expected argument datatype for commands

In order for the client to know how to format data for arbitrary commands, the server needs to provide this information. This includes the expected JSON datatype as interpreted from the validation framework.

Included in this commit is the change to only support one datatype per attribute. If other datatypes are desired, they can be supported via the `conform!` method. `update-node-metadata` and `modify-node-metadata` have been updated to accept both `_` and `-` in their arguments that previously only accepted the non-standard `_`.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-216