Strings and Optimizations

Did a number of optimizations to garbage collection along with
references. Strings have mostly been converted to objects and are now
reference counted. This means strings are passed and copied by reference
and not by value.