Add image encoding/options

Added ability to specify image format, configure JPEG quality and
thumbnail options
Return resolution from different source

The camera's actual resolution is clamped to increments of 16 so
setting something like 1920x1080 results in the actual camera resolution
being 1920x1088, but images are cropped back to the requested
resolution. In order to avoid user confusion, return the requested
resolution from the camera_config structure instead of the camera's
actual resolution from the output port's format
Start work on tests

Pillow is going to be required for several image-based tests (ensuring
output resolution is correct, etc.) and we need to work around the
multiprocessing issue for py.test