clone: add the 3rd parameter and one function

I think following style is more better. What do you think?

```
function clone<T>(val: T, circular?: boolean, depth?: number): T;
module clone {
  clonePrototype<T>(obj: T): T;
}
```

When the test is also updated together is more happy. :smiley_cat: