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

pls squash, otherwise looks ok

@TomAugspurger ?
 I'm fine with this being two commits since it separates the addition of `is_hashable` and the plotting issue.

Could you add a test or two for `is_hashable` too? Thanks.
 @aevri pls add test for `is_hashable` in `tests/test_common`
 I've updated with these changes:
- added tests for `is_hashable` in `tests/test_common`
- modified `is_hashable` to first reject based on collections.Hashable, this is to avoid broadening the definition of hashable to include old-style classes and anything else I can't think of
- changed whatsnew entry to say `DataFrame.plot(kind='scatter')`
- In scatter_with_c tests, supplied RGBA colors as 'c' and added test for face colors to be identical to supplied values
- rebased to catch up with upstream

Was considering how to test the face colors of the case where we supply a colormap, don't know how to query the colormap ahead of time though.

Cheers!
 @aevri By the way, David (@cournape) fixed it in numpy today: https://github.com/numpy/numpy/pull/5326

And the tests are failing on python 3 (and on numpy master, because of Davids fix)
 Have updated:
- rebased on master to fix merge conflicts
- wrapped Python2-specific tests in sys.version_info check
- made numpy.array test work with or without numpy fix

Cheers!
 Rebased again for new merge conflicts

Afaik all points are addressed and this is ready to land, please let me know if there's something I've missed :O)
 Looks OK for me! Lets wait until travis is green
 @aevri thanks for the fix!
 Yay! Thanks everyone :)
