Handle = in names

Existing functionality failed if you tried to, for example, create
a name like "a=b". This fixes that by consolidating the logic around
the expected datatypes for each argument.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-372
It might be good to document now what all the arguments to this method are