throughput calculation at end of iteration

Currently throughput is being calculated every second, however, there is no point in doing so because command.TotalTime only gets populated at the end of each iteration.

To fix this, throughput calculation is now done at each iteration, this implementation eliminates the extra channel in SamplableExperiment{} and is much cleaner

Also added a heatbeat timer in Sample() so users could see the Wall Time in CLI runs, or else users only see updates at the end of each iteration