#409 - slight OpticalPSF restructuring

This is a small and not even remotely urgent pull request for some restructuring of the optical PSF routines to pass around arrays of aberrations rather than individual values.  This change will be useful if we wish to eventually include higher order aberrations, so we aren't eventually passing around more than ten numbers.  The OpticalPSF constructor now repackages the input aberrations into a single array, which it passes to all the utilities in optics.py; or, it optionally takes a list/array of aberrations directly as a keyword.

To illustrate this usage, I changed the python version of one of the demos to use the "passing in an array of aberrations" functionality for OpticalPSF.