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.