depth-limited custom stringify function

Provide special purpose value stringify function for power-assert value formatting.

Depth-limitation
---------
* [x] Object
* [x] Array

Trying to prune deep Object/Array elements (default depth = 1)
```
var foo = 'foo', bar = ['toto', 'tata'], baz = {name: 'hoge'};

assert.notDeepEqual([foo,bar,baz], new Array(foo, bar, baz))
                     |   |   |     |         |    |    |    
                     |   |   |     |         |    |    Object{name:"hoge"}
                     |   |   |     |         |    ["toto","tata"]
                     |   |   |     |         "foo"          
                     |   |   |     ["foo",#Array#,#Object#] 
                     |   |   Object{name:"hoge"}            
                     |   ["toto","tata"]                    
                     "foo"                                  
```

Value Rendering
---------
* [x] NaN
* [x] Infinity
* [x] -Infinity
* [x] String object
* [x] Date object
* [x] Number object
* [x] Boolean object
* [x] RegExp object
* [x] function primitive
* [x] Function object
* [x] User defined class
* [x] User defined anonymous class

```
function Person(name, age) {
    this.name = name;
    this.age = age;
}
var alice = new Person('alice', 3), bob = new Person('bob', 4);

assert(alice.age === bob.age)
       |     |   |   |   |   
       |     |   |   |   4   
       |     |   |   Person{name:"bob",age:4}
       |     3   false       
       Person{name:"alice",age:3}

$$$ [number] bob.age
### [number] alice.age
$=> 4
#=> 3
```

Other TODOs
----------
* [x] Do not quote keys
* [x] Constructor notation
* [x] Apply expected / actual reporting too