Move the GPU-choosing code into a new function optimize()
Always check for GPU properties
Pull bsz out as a global variable so we can adjust it at runtime
Compute the block size at runtime using device properties
Swap the radiative transfer variables and impact parameters
Update COLOR_POINTER_OFFSET so we keep the coloring scheme
Reduce the default image size
Introduce sub-structure and get the kernel ready for multiple images
Support computing multiple (N_NU) images at once
Hard-wire five frequencies in order to fit Sgr A*
Print all the averaged fluxes in the first line