ipynb/energy/SystemEnergy: Rework pstate modelling
ipynb/energy/SystemEnergy: Rework pstate modelling

This is fairly extensive rework of the SystemEnergy notebook.
The main additions are:

* Computation of "tare" (noise) system energy. With the previous
  implementation, we would determine that the energy measured
  at (n_cpu == 0) would be the cluster energy. However, this
  energy includes a lot of other components, even more so when
  the energy measurement point is far away from the clusters
  (from the standpoint of the electrical circuit).

  The proposed improvement is as follows:
  - Before doing measurement on cluster 'A', find another cluster 'B'.
  - Offline cluster A, online a single CPU noise_cpu of cluster B
  - Run benchmark on noise_cpu. Energy measurement = noise_energy
  - Online cluster A and run the tests.
    Run benchmark on noise_cpu during the tests
    Subtract noise_energy from test energy measurement

  While not flawless, this should greatly improve our cluster costs.

* Energy measurement filtering. Due to many different physical
  parameters, energy curves can be non-monotonic, which shouldn't be
  the case. As such, non-monotonic readings are expunged.

* Energy model monotonization. Even with model generation improvements,
  the resulting energy model can be non-monotonic and we then have to
  "massage" it into shape. This is now done inside the notebook itself
  by replacing non-monotonic values with a polynomial interpolation.
  This isn't perfect, as I've had cases where the interpolation
  itself wouldn't be monotonic (locally, within the scope of our
  energy values), but this can easily be spotted.

ARM-software/lisa,credp/lisa,ARM-software/lisa,ARM-software/lisa,credp/lisa,ARM-software/lisa,credp/lisa,credp/lisa