SPIMSetup: Future-proof Device infrastructure

The old Device factory registration relied on a quirk of MM's plugin
loading which loaded each class, causing the static initializer blocks to
fire. This approach, using a ServiceLoader to find all factories, is less
elegant and more verbose, but it won't fail if MM changes the plugin
loading behavior.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
fixup! SPIMAcquisition: Improvements to GenericRotator

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
ProgAcq: Better profiling

I got curious how much output time was mid-acquisition, and how much was
post-acquisition, so I broke the categories up more.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>