Calc perf

@pld please review our changes, these are mainly changes to the way dframe behaves, e.g. during calculation bamboo does not require the entire dataframe in memory, but only the relevant columns for the calculation, it will then update rows accordingly