Move a lot of code from StaticModule to CamProjModule

This commit fixes a lot of redundancies and keeps the code that
will be common to all implementations of camera and projector
settings in the base class. I decided to create the widgets in
the base class, and then the derived classes can choose to use
them in their own layouts, instead of having the base class create
a layout that all children are forced to use and append to. This
will allow, for instance, the robots module to have a custom UI
that can allow positioning the remote projectors, without having
to adhere to the same layout that the static projectors use.
Remove maxlvls from the projector settings

This is really a structured light setting.
Organize headers
Make light windows persistent

The light windows always exist now, and are able to be hidden during
the program's execution. They also update their positions and sizes
when the corresponding projector properties change.
Fix image projection
Fix a memory leak with projecting images
Enable projectors via checkbox

I had set the visibility of the light windows directly instead of
setting the correct checkbox state.
Change light windows to use intensities

Instead of telling the light windows to display a mask, give it the
onValue intensity.
Support colored images in the light windows
Remove redundant changes
Add camera interface signals and slots to the CamProj module

In reality, this isn't at all necessary since any module can own
a CameraInterface object without any consequences. However, it
makes for a clean interface if everything is unified.
Move capturing with the camera to the CamProj module
Handle null images