Proof of concept for Table mixins - Time and FunctionColumn

This is an initial demonstration of the idea of Table mixin columns.  These are table columns that are not subclassed from `Column` or `ndarray` but which implement a protocol that allows them to be part of a Table.  Essentially they have a sufficiently close API and can do the operations required by the Table API.

The implementation for Time is the primary demonstration.  
```
>>> from astropy.table import Table, Column
>>> from astropy.time import Time
>>> a = Column([3, 4, 5], name='a')
>>> time_obj = Time([1, 2, 3], format='unix').replicate(format='iso')
>>> t1 = Table([a])
>>> t1['b'] = time_obj
>>> print t1
 a             b           
--- -----------------------
  3 1970-01-01 00:00:01.000
  4 1970-01-01 00:00:02.000
  5 1970-01-01 00:00:03.000

>>> t1['b']  # This is really a Time object
<Time object: scale='utc' format='iso' value=['1970-01-01 00:00:01.000' '1970-01-01 00:00:02.000'
 '1970-01-01 00:00:03.000']>

>>> t1._data  # Internal JD1 and JD2 stored in the array but not visible in table
array([(3, 2440588.0, -0.4999884259259259),
       (4, 2440588.0, -0.49997685185185187),
       (5, 2440588.0, -0.4999652777777778)], 
      dtype=[('a', '<i8'), ('b__jd1', '<f8'), ('b__jd2', '<f8')])
```

There is also a `FunctionColumn` class that demonstrates defining a virtual column which is the functional output of any table columns.  This also shows roughly the minimal implementation of the "mixin protocol".

Lastly there is the beginnings of a Coordinates mixin.  Unfortunately there is a technical snag that I don't understand. 

One of the key concepts here is that (where applicable, e.g. in `Time`) the internal representation of the object should be stored within the `ndarray` that is the basis of the Table instance.  But now as I'm writing this, maybe that isn't really a hard requirement and everything might just be simpler without doing that.  Hmm.

In any case here it is for discussion.