Added depth argument

`clone(anObj, false, 1)` results in a shallow clone. We can make it a step deeper with `clone(anObj, false, 2)`.

Currently only works with `circular == false`, but there won't be many use cases where `circular == true` and `depth < Infinity`. I do hope to fix this in a future commit.