[bug] Utility.clone nested array handling

If you current pass in an object that has nested arrays such as:
```js
var cloned = Utility.clone({ 
   a: [ 0, 1, [ 2, 3]]
});
// Utility.clone would return:
cloned === { 
    a: [0, 1, { 0: 2, 1: 3}]
}
```
This checks the type of b before setting it to an object or array, allowing the expected output.