add tests for Calculated_shifts structure
new exception Calculated_shifts.average should fail if no shifts added
shift averaging is now triggered by get_shift_cache after shifts are set

this also eliminated all direct references to _shift_cache all accesses
to shift cache are now via get_shift_cache
push Calculated_shifts into in sub potentials which took a shift_cache
ensemble_shift_caches are named so sub potetial weighs can be calculated

sub protential shifts will be used to calculate a 'shift distance' to
give each potential and shift a weight in the forces and energy
calculation. The shift distance is the sum of the aaaabsolute values of
the shifts...
add infrastructure for retaining per sub_potential shifts
retain sub potential shifts in weighted calculations and test

test shows that weighted and unweighted calculation yield the same
shifts
cython shift caclculatore correct erroneous indentation & logic!
correct typo set_weigted -> set_weighted
add test which wasn't updated in adding calculated_shifts structure
record weight of sub potential when adding shifts to calculated_shifts

this allows the overall weights to be calculated and the components that
have no weight (e.g. rc shifts) to be identified
add the ability to set weights to sub potentials
calculated_shifts rename _weights ->  _sub_potential_weights
add mechanism for calculating weights of individual shifts and tests