Implement an IPAC table writer

This is based on discussions in #833 and and #1143.
@taldcroft
@keflavich
Please use this pull request to suggest your changes.

closes #833
fix itendation errors in documentation
modified for the suggetions on the pull request
improve formatting as the taldcroft suggestion
Multiplication/division of TimeDelta, updating documentation and tests.
fix to issue #1168
Add test for simple degree parsing
Implement composite models as a subclass of Model so that they canbe nested
implement the changes dicussed on the issue tracker in github
return the identation as much as possible to @taldcroft original design
Merge pull request #1168 from mdboom/coordinates/angle-parser-simple

Angle parser can't handle '1 degree' but can handle '1 degree 1 minute'
Assuming the distortion models return the deltas, i.e. the result of the model evaluation, changed the parallel composite model was modified to add them to the original input
Merge pull request #1173 from nden/composite-models

Composite models changes (closes #1158)
Raise an error when the number of sets of coefficients provided by a user does not match the param_dim parameter and the number of coefficients sets cannot be inferred. Write to log.info if the number of coefficient sets can be inferred and create a model.
Fixed a typo. Renamed xdeg --> x_degree, ydeg --> y_degree
Make sure all polynomial models accept as input numbers, 1D and 2D arrays.
Fixed Legendre2DModel evaluation. Renamed utils.pmapdomain --> utils.poly_map_domain, xdomain --> x_domain, ydomain --> y_domain. Added dummy parameters to all polynomial derivatives to allow fitting of polynomials with non-linear fitters.
Move the __call__ method from Legendre2D and Chebyshev2D to the base class.
Changed the LinearLSQFitter to check for the presence of 'domain' and 'window' and then remap the data. This allows creating polynomial models without requireing that they have 'domain' and 'window' attributes.
Fix Poly2DModel docstring