adds uniform percentage distribution strategy
adds rebalancing
some refactoring e.g. introduces LifeFactory so we don't have to call life.reset which is error prone
exposes distribution average in the results
few more error checks
adds concept of trades, needed for rebalancing