Add context and access list.

Context: allows to add context to a request, any of those values are passed to the
views. One example is to add to the context the current user object, this object is
then added to the jinja2 local context and available for all views.

Access list: if some of the url endpoint can only be accessed by a limited set of
users, those can be specified as part of the url. It ends up looking like this:

```py
route('/path/', 'ViewName', access=[login_required])
```