ENH: tolerance argument for limiting pad, backfill and nearest neighbor reindexing
xref #9817

This does not entirely solve the floating point precision issues, but gets us part of the way there -- we can explicitly lookup data with a fixed tolerance for nearest neighbor matches.

It is also is useful in its own right, mostly as a simple sanity check to verify that labels are not entirely misaligned.

Example usage:

```
In [2]: df = pd.DataFrame({'x': range(5)})

In [3]: df.reindex([0.1, 1.9, 3.5], method='nearest', max_distance=0.2)
Out[3]:
      x
0.1   0
1.9   2
3.5 NaN
```
