WIP: searchsorted implementation

closes #6712

- [ ] `timedelta64` tests
- [ ] more edge case testing
- [ ] how should non-monotonic indexes be handled (currently raising a `ValueError`)?
- [ ] `datetime64` (and probably `timedelta64`) coercion needs work
- [ ] `side` argument testing
no ``self.take(index)`` returns a Series
```
In [7]: s
Out[7]: 
0             1
1             2
2            90
3          1000
4    3000000000
dtype: float64

In [8]: s = Series([1, 2, 90, 1000, 3e9])

In [10]: sorted =s.values.searchsorted([30])

In [11]: s.index.take(sorted)
Out[11]: Int64Index([2], dtype='int64')

In [12]: s.take(sorted)
Out[12]: 
2    90
dtype: float64
```

I guess ``searchsorted`` can return multiple indices/slice as well