BUG: Fix maybe_convert_numeric for unhashable objects
- [x] closes #13324
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13326?src=pr) is **84.22%**

> Merging [#13326](https://codecov.io/gh/pydata/pandas/pull/13326?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will increase coverage by **<.01%**

``` diff
@@             master     #13326   diff @@
==========================================
  Files           138        138          
  Lines         50684      50681     -3   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
- Hits          42684      42682     -2   
+ Misses         8000       7999     -1   
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last updated by [c0850ea...80b8515](https://codecov.io/gh/pydata/pandas/compare/c0850ea7f4c04a725142408208a49072dbe04b63...80b8515fc0d26c1905fa411b438d28758276e76b)
 @jreback i've made the changes you suggested
 looks good. ping when green.
 @RogerThomas thanks!

I was just experimenting with something and:

so maybe should change this to `if getattr(val, '__hash__', None) is not None`

though can't seem to get this to trigger

```
In [1]: 'a'.__hash__
Out[1]: <method-wrapper '__hash__' of str object at 0x1002e1508>

In [2]: None.__hash__
Out[2]: <method-wrapper '__hash__' of NoneType object at 0x100180c40>

In [3]: 1.__hash__
  File "<ipython-input-3-e97b483155ff>", line 1
    1.__hash__
             ^
SyntaxError: invalid syntax

In [5]: [].__hash__ is None
Out[5]: True

```
 if you want to see if you can generate a test that makes this fail (not sure). If so , can you do a followup?
 Hey @jreback, I think this is just due to python's syntax parser.

``` python
In [1]: a = 1

In [2]: a.__hash__
Out[2]: <method-wrapper '__hash__' of int object at 0xa63b00>
```

I don't think this could ever fail
 oh ok that makes sense thanks 
