assert: actually check prototype with deepEqual()

Originally, assert.deepEqual() checked whether the two objects' prototypes
were equal by doing `a.prototype === b.prototype`. `a` and `b` are instances,
not constructors, which means their `.prototype` will always be `undefined`
anyway.  This makes the conditional useless.

Use `.__proto__` instead to access the real constructor.

Fixes joyent/node#4523.