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
fixes a small bug that prevented changes in the comment symbol on writing

closes #790
Multiplication/division of TimeDelta, updating documentation and tests.
Comparisons of Time and TimeDelta
implement the changes dicussed on the issue tracker in github
return the identation as much as possible to @taldcroft original design
Add __truediv__ for python 3, as well as one-line doc-strings
Allow __abs__ on array, add test, write div in terms of mul: * 1./other
Add tests, if only to avoid the silly bug of the previous commit
Fix bug: masked property lost when slicing a masked table

This patch is fixing the following bug:
If a masked table is sliced, then the resulting table obtains the
masked numpy array, but not the self.masked attribute.
Thus, e.g. tab.filled() does not work any longer (it believes that the
table is not masked). This has further consequences, e.g. it makes it
very difficult to ever remove the mask from the table.
```
In [27]: tab = Table([[3,4],[5,6]], masked = True)

In [28]: tab1 = tab[[True, True]]

In [29]: tab.masked
Out[29]: True

In [30]: tab1.masked

In [31]: print tab1.masked
None

In [32]: tab.filled()
Out[32]:
<Table rows=2 names=('col0','col1')>
array([(3, 5), (4, 6)],
      dtype=[('col0', '<i8'), ('col1', '<i8')])

In [33]: tab1.filled()
Out[33]:
<Table rows=2 names=('col0','col1')>
masked_array(data = [(4, 6) (4, 6)],
             mask = [(False, False) (False, False)],
       fill_value = (999999, 999999),
            dtype = [('col0', '<i8'), ('col1', '<i8')])
```

The fix is fairly simple in principle:
In `_new_from_slice` the new instance of a table just needs to be created
with the correct masked value.

In order to test this, we just need to compare
table.masked and sliced_table.masked in the tests for slicing etc. .
That sounds simple, but in practice is complicated by the fast that indeed
three values were allowed for masked = [True, False, None].

Now why `None` at all? A table with `masked = None` behaves in any way like
a table with `masked = False`. However, all tables are created with
`masked = None`. Why was that? I am not really sure, but from looking at the
 code, this seems to be the reason: Setting `masked = True` raises an exception
if the table was masked before and setting `masked = False` raises an exception
is the table had `masked = False` before. So, the table had to be
initialzed with `masked = None` just to make sure that things don't break if
a user explicelty requests `masked = False`.
Hard to understand? I am not sure why the original implementation was this way.
So, I removed all notions of `masked = None`, now a tables is masked or it is
not masked.
[This change does not cause a single test to fail.]
Since masked cannot be set directly by the user anyway (it's a
property with no setter) I also removed the aformentioned Exception.
(Indeed, I am not sure if it ever was possible to get the Exception raised, since
the user cannot set `masked` directly anyway.)

Aside note:
According to the documentation, `Table.__init__` should accept a `mask` that
sets an inital mask, when really it takes only a `masked`, which determines
is a table will have a mask (and set all values of the mask to False).
I added documentation for the `masked` and commented out `mask` (since it
does not work).
I am not sure if `mask` might even be removed entirely or if this should be
fixed, but in any case that is beyond the scope of the current pull request.

@taldcroft : For I know that masked tables are close to your heart.
back out API changes, only do the immidiate bug fix for this PR
Upgrade distribute_setup.py script to 0.6.45, since then it will recognize that setuptools 0.7 or later is 'good enough' and won't try to replace it.
Fix help typos, PEP8 new code.
Fix evaluating a SCompositeModel with labeled input
Merge pull request #1187 from hamogu/slice_masked

Fix bug: masked property lost when slicing a masked table
Remove comment about mask passing in.
Merge pull request #1194 from hamogu/fix1194

Remove reference to Table.mask in docs and remove code comment about adding mask arg