CLN: Add 'is_hashable' predicate to core/common

Some types will pass a test against collections.Hashable but fail when
they are actually hashed with hash().

Introduce a new predicate to help handle these types.

Will use this in subsequent commit.

Test Plan:
In addition to running tests, run the doctest
$ nosetests pandas/core/common.py:is_hashable --with-doc -v
BUG: allow numpy.array as c values to scatterplot

Ensure that we can pass an np.array as 'c' straight through to
matplotlib, this functionality was accidentally removed previously.

Add tests.

Closes #8852