assert: add errEqual method

There was previously no inbuilt way to test the equality of two errors.
assert.deepEqual exhibited the confusing behaviour of passing
assert.deepEqual(new Error('foo'), new Error('bar')) and also
assert.deepEqual({}, new Error('foo'));

This is potentially surprising behaviour and should be documented.
Adding the method specifically for testing shallow error equality makes
it clear that deepEqual is not appropriate for Error objects.