Add support for nested comparisons

Added support for nested comparisons in the `where` object, and simplified the codebase drastically. Nested comparisons was inspired by [this](https://github.com/msiemens/tinydb/issues/10) issue. As proposed in the issue the syntax is:

```python
query = where('user.name') == 'John'
assert query({'user': {'name': 'John'}})
```

Also new `any` and `each` functions were added to serve for querying of iterables. For example:

```python
user = {'user': {'pets': [{'name': 'cat'}, {'name': 'dog'}]}}
any_query = where('user.pets').any(where('name') == 'dog')
each_query = where('user.pets').each(where('name') == 'dog')

assert any_query(user)
assert not each_query(user)
```