add support for decorator based recipes

You can now write recipes in a more strict way:

```python
@recipe(lambda m: m.is_multiparty())
def process_multipart_email(mbox, message):
    pass