Added support for sliced searching

This adds pagination by slicing or index access.

For example:
```
>>> Search()[5:10].to_dict()
{'from': 5, 'query': {'match_all': {}}, 'size': 5}
>>> Search()[:10].to_dict()
{'from': 0, 'query': {'match_all': {}}, 'size': 10}
>>> Search()[10:].to_dict()
{'from': 10, 'query': {'match_all': {}}, 'size': 10}
>>> Search()[0].to_dict()
{'from': 0, 'query': {'match_all': {}}, 'size': 1}
```