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
Just 'value = Array(value)' here should be enough, since Array([]) = []