Clone doesn't protect against circular references

Ready for review. Coverage remains at 100%. Original test cases work. 

Notes:

* Not thread safe (assuming that's a non-issue)
* Removed the conditional parameter making this behavior optional (it crashes in the ignore case...)
* Have not tried every possible object composition but it works for the ones I tested (if anything pops up, I should be able to fix quickly)

References issue/17: 
#17