handle primitives consistently

string  primitives were being treated the same as boxed strings while
the rest of the primitives were treated strictly. I went the the way of
treating boxed primitives as normal primitives because thats more
useful for the use case I have in mind which is a cloning function.  The
other way isn't bad though it just needs to be consistent.