Make with handle lists of events

Currently if you put `with` inside `rollup`, you get this kind of error:

```
java.lang.IllegalArgumentException: Key must be integer

clojure.lang.APersistentVector.assoc(APersistentVector.java:335)
clojure.lang.APersistentVector.assoc(APersistentVector.java:18)
clojure.lang.RT.assoc(RT.java:702)
clojure.core$assoc.invoke(core.clj:187)
riemann.streams$with$stream__10405.invoke(streams.clj:1287)
riemann.streams$rollup$side_effects__10148$fn__10160.invoke(streams.clj:1078)
riemann.streams$rollup$side_effects__10148.invoke(streams.clj:1078)
riemann.streams$part_time_simple$stream__9574.invoke(streams.clj:610)
riemann.streams$rollup$side_effects__10148$fn__10160.invoke(streams.clj:1078)
riemann.streams$rollup$side_effects__10148.invoke(streams.clj:1078)
riemann.streams$part_time_simple$stream__9574.invoke(streams.clj:610)
riemann.streams$throttle$side_effects__10114$fn__10125.invoke(streams.clj:1042)
riemann.streams$throttle$side_effects__10114.invoke(streams.clj:1042)
riemann.streams$part_time_simple$stream__9574.invoke(streams.clj:610)
riemann.config$eval46679$fn__46886$stream__51793$fn__51798.invoke(riemann.config:834)
riemann.config$eval46679$fn__46886$stream__51793.invoke(riemann.config:834)
```

This fixes that, and also improves performance if users call `(with {} children)` - it removes the traversal of the event (at stream startup time, so there's no additional overhead at runtime).
Gonna give a name to this anon fn, but otherwise looks good!