Support multi-channel wavefunctions in multislice
The 2D complex wavefunction is currently passed as a 2D tensor to the Multislice
class, even though it is a 2D image which would ordinarily be encoded as a 3D or 4D tensor in PyTorch using CHW or NCHW axis order. Multichannel wavefunctions are a natural way to encode incoherent electron wavefunctions, since if we propagate them properly they can interact with exactly the same phase grating via broadcasted multiplication, and then simply summing CBED intensities gives us the overall mixture intensity.
At this time I don't think we need to handle multiple potentials at once since that is not our target use case.
Plan
Starting with the multislice module, require 3D tensors (or when possible, any dimension >=2) and broadcast accordingly. Update all tests and examples to pass.