fixed object copying in assignments and func calls.

I've decided that all LuciObject types are mutable,
however only `list` and `map` types are shallow copied
on assignment. This means assigning an int,float,string,etc.
to a symbol actually assigns a deep copy of that object
to the symbol. Unlike many languages however, strings
(and soon numbers) can be modified in place like a list or map.