Predicate call context (WIP)

Related to #6, #7, #9.

Adds the ability to specify that a predicate wants a dict containing information about the current ``test_rule()`` invocation.

```
>>> @rules.predicate(takes_context=True)
... def mypred(a, b, **kwargs):
...    print(kwargs['context'])
...    return True
...
>>> rules.add_rule('myrule', mypred)
>>> rules.test_rule('myrule', 1, 2)
{'args': (1, 2), 'kwargs': {}}
True
```

Predicates that want context must accept ``**kwargs``.

A nice advantage of this PR is that it allows predicates to store arbitrary data that other predicates may later use. It is possible for example, to store an expensive computation done in one predicate (maybe fetch a bunch of objects from db, related to the given user/object) and another predicate access it later on.

This is backwards-compatible -- at least all tests pass.

Here are some things that need to be done in order for this PR to be merged:

- [ ] Decide on the API -- pretty close already, I guess.
- [ ] Write docs -- add a new section in README for now.
- [ ] Find any glaring bugs.
- [ ] Some more tests maybe.

All feedback welcome.
the problem of the usage of a global here, is when we will have nested predicates
```
predicate1 start
[context = predicate1's context]
  predicate2 start
[context = predicate2's context]
  predicate2 stop
[context = None]
predicate1 needs to access its context
BAAM it's gone
predicate1 stop
```

ideas:
- We can use a stack of contexts and pop() from there ?
- We can have a per predicate storage for the context ?
- probably more...