Mapping from Noll index i to Zernike indices (u,v)

The file contains the u,v = zernikeIndex(i) function that maps from the
convenient Noll indexing to the Zernike indices. So far I was not able
to detect errors in the mapping up to i = 200 or so. I'm confident it'll
work just fine for larger values as it is not using an approximation.
Updated zernike mode generation

Now zernike(...) takes both 3 or 4 arguments. The first one:
zernike(rho,theta,i) with i the Noll index. The second form:
zernike(rho,theta,u,v) allows specification of the index manually.
Test the WFG features

Now also test Noll's indices generation and print them in the console.
Additionally, the new 3 argument syntax of zernike(...) is used.
File with support functions and methods

These function, used to be part of the zernike.py file, split for
readability. Moreover, others may benefit from it. Added a circular
aperture function and a function to create a square spatial grid.
Added a ZernikeWave class

This class allows, to add/remove/adjust modes to your liking. When you
are all done, hit createWavefront(...) and the final result is ready.
For ease, you can quickly plot the result of the modes or the combined
wavefront from the class.  Finally, the class also allows for
decomposition a wavefront in zernike modes, with
decomposeWavefront(...).
Updated test WFG features

New additions: test the zernikeWave class. Wavefront generation as well
as wavefront decomposition.
Merge branch 'master' of https://github.com/faitdivers/pyao into iss15
test file and there are still some bugs, creation of phase_id is going wrong
some printing for debugging