Dynamic coordinate preferred representation

This is a way to allow dynamic preferred representation for coordinates (low-level and high-level).  This is a possible way forward for the concerns raised in #2550.

DO NOT MERGE now.

Example:
```
>>> import astropy.units as u
>>> from astropy.coordinates import *
>>> c = ICRS(1*u.deg, 2*u.deg)
>>> c.ra
<Longitude 1.0 deg>
>>> c.preferred_representation = CartesianRepresentation
>>> c
<ICRS Coordinate: x=0.999238614955 , y=0.0174417749028 , z=0.0348994967025 >
>>> c.x
<Quantity 0.9992386149554826>
>>> c.ra  # I don't quite understand why the ra property goes to __getattr__ in this case
ERROR: AttributeError: 'ICRS' object has no attribute 'ra' [astropy.coordinates.baseframe]
Traceback (most recent call last):
  File "<ipython-input-8-37edf1c420ac>", line 1, in <module>
    c.ra
  File "astropy/coordinates/baseframe.py", line 546, in __getattr__
    .format(self.__class__.__name__, attr))
AttributeError: 'ICRS' object has no attribute 'ra'

>>> c.data  # Still Spherical underneath the hood
<UnitSphericalRepresentation lon=1.0 deg, lat=2.0 deg>

>>> sc = SkyCoord(1*u.deg, 2*u.deg)
>>> sc.frame.preferred_representation = CartesianRepresentation
>>> sc
<SkyCoord (NoFrame): x=0.999238614955 , y=0.0174417749028 , z=0.0348994967025 >
>>> sc.x
<Quantity 0.9992386149554826>
```


This was one of my changes. My bad.
On Jun 12, 2014 12:20 PM, "Thomas Robitaille" <notifications@github.com>
wrote:

> In astropy/coordinates/tests/test_sky_coord.py:
>
> > @@ -13,11 +13,14 @@
> >
> >  import numpy as np
> >  from numpy import testing as npt
> > +import six
>
> This is making Travis crash. Should be, I think,
>
> from ...extern import six
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/astropy/astropy/pull/2586/files#r13689315>.
>