Token-based authentication

This PR introduces authentication on top of the User model.
Kinda generic name. Not sure what is happening here just by reading this line.  
Also, call purely for side-effect. Maybe there's a way to express this more like an action:

```python
app.registerMiddleware(shiva.auth)
```
or something like that.