Add support for Poisson injector. Allows randomized load profiles.

Added a new injector using Poisson random processes.

This new injector effectively serves as a randomized variant of `ConstantRateInjection` and `RampRateInjection` . Users still arrive at the same rate, but their arrival times are randomized.

I also added `randomize` methods to `ConstantRateInjection` and `RampRateInjection`, as this seemed like the most intuitive way to expose the new functionality.
I sometimes use try/finally for "return a value then mutate it". But I can change it to the usual `val ret = ???; /* do stuff */; ret` idiom.

I tried to find a way to do this with folds, but couldn't find an elegant way to do so. What did you have in mind?