refactor fabric notify()

this is mainly for DRY and easier reading/following
parametrize other arguments to notify()'s event() call

currently, if you want to send in additional information from fabric, there is
no way to do it short of creating your own version of the fab script from the
api. this change enables something like the following:

```python
  def my_tags(t, args, kwargs, error):
    return ["user:%s" % env.user]
  def my_title(t, args, kwargs, error):
    return '%s.%s' % (t.__name__, env.host)

  from dogapi import fab
  fab._tags = my_tags
  fab._title = my_title
```

which makes it possible to customize fabric notification events without
rewriting the entire thing.
pass duration to _text

this makes the function signature for `_text()` different from the other
formatting functions used in `notify()`; not sure if that's the lesser evil or
of i should just pass `duration` to every one of those functions.
Merge pull request #75 from igor47/master

Allow customizing fabric events