Removed unnecessary overhead from Object::copy().

The shared_ptr machinery has a pretty significant overhead when copying small objects - this change gives almost a 50% reduction in runtime in a benchmark which copies many small data objects (where lazy-copy-on-write defers most of the real work anyway).

There were a few unecessary overheads :

- Allocating the CopyContext on the heap.
- Using a shared_ptr
	- Allocates another heap object for use as a reference count.
	- Uses atomic operations to increment and decrement the reference count.
Merge pull request #279 from johnhaddon/copyOptimisation

Removed unnecessary overhead from Object::copy().