Store data as a dict now (see #13)

As discussed in #13, these changes make tinydb store the table data in a `dict` instead of a `list`. All elements returned by tinydb are now instances of `Element` which is a subclass of `dict`, so the public interface doesn't change much.

Example:
```python
>>> el = db.search(where('field') == 2)
>>> el
Element(eid=4, data={'field': 2, 'other_field': 'something'})
>>> el.eid
4
>>> el['field']
2
>>> el['other_field']
'something'
```