allow noises, calibrations, and references to be lists, dicts, or structs
This allows the noises, calibrations, and references of nb.Budget
s to be either lists, dicts, or Structs whereas previously they could only be lists.
A unit test was also added to test this. It also tests the existing functionality that calibrations can be applied by listing them as (Noise, Calibration)
tuples in the list of noises and that references can be given which do not contribute to the total noise. Since none of these features are included in the canonical budgets, they were not previously tested.