Create camera classes

There is a parent class that is intended to be the base class for all
cameras.

The ueye_camera class is specific to the uEye camera family from IDS. It
calls idscam to record raw video frames.

Camera class stores default video parameters like cropping, binning,
etc.

Future work:
- Call raw2h264 to compress them into video files.
- Handle the uEye daemon flakiness by restarting the camera daemon every
so often
Remove video parameter defaults from camera class

On second thought, there isn't much value in keeping default video
parameters like binning, subsampling, cropping, and exposure window. The
camera user should be explicit at each call in order to avoid confusion.
add camera to scancam class
add video parameters to base scan class

Each scan may have it's own cropping, binning, etc parameters used for
video collection.
record video use dict of format params

Video format parameters including: binning, subsampling, cropping,
exposure window are passed in inside a dictionary.

These parameters are stored in a dict in the scan so it makes it much
easier to pass them in.
add missing camera arg to xthetaz_scancam constructor