Lift methods for Aggregator and MonoidAggregator

This can be useful when you have a common call site that expects to use
the standard Aggregator API (prepare, present) but in some cases you
wish to aggregate values that come as Option or collection types.
I think the correct solution is actually to require a stronger `MonoidAggregator` (so that you can handle the case of an empty `TraversableOnce` and provide the following method on `MonoidAggregator` that generalizes `composePrepare`:

```scala
def preFold[A2](f: A2 => TraversableOnce[A]) : Aggregator[A2,B,C] = new MonoidAggregator {
    def prepare(a : A2) : B = self.monoid.sum(f(a).map(self.prepare(_)))
    def monoid = self.monoid
    def present = self.present
}
```

If you still want to use `Aggregator` for some reason, then at least have `lift` return a `MonoidAggregator` instead of an `Aggregator` (since `Option[B]` is a `Monoid` if `B` is a `Semigroup`)