FIX: Make object comparison ufuncs not include identity check

The issue here is that PyObject_RichCompareBool does an identity
check before doing any other checks. This is good, and is the
way for example list comparisons are handled. However in numpy
comparisons are elementwise, so that the identitycheck should
not be expected. The example for this is as follows:
obj_array = np.arange(3)
a = np.array([obj_array, 0], dtype=object)
np.equal(a, a)
If an identity check is done, this returns [True, True]. But
obj_array == obj_array itself cannot be cast to a bool.

While this is slightly slower, not doing the identity check seems
more logical in the light of elementwise operations.

Closes gh-2117.
DEP: Deprecate that comparisons ignore errors.

This means that for example broadcasting errors get raised.

The array_equiv function is changed to explicitely test
if broadcasting is possible. It may be nice to do this
test differently, but I am not sure if that is possible.

Create a FutureWarning for comparisons to None, which
should result in areal elementwise (object) comparisons.

Slightly adepted a wrong test.

Poly changes: Some changes in the polycode was necessary,
the one is probably a bug fix, the other needs to be
thought over, since len check is not perfect maybe, since
it is more liekly to raise raise an error.

Closes gh-3759 and gh-1608
DOC: Add (object) equality changes and error raising to release notes
DEP: Deprecate identity check in comparisons (not just removing)

Instead of just removing it, raise Deprecation/Future warnings
when the comparison object ufunc and the identity check do not
coincide.
MAINT: Comparison deprecation followup fixes

Makes the identity check `a = np.array([np.nan], dtype=object)`
`a == a`, etc. a deprecation/futurewarning instead of just
changing it.
Also fixes some smaller things.
Merge pull request #3514 from seberg/object_comparison

FIX: Make object comparison ufuncs not include identity check