Make SkyCoord support lists of object inputs

While doing some work with 0.4rc1, I noticed some odd behavior demonstrated with this snippet:
```
>>> sc = SkyCoord(ra=[1,2,3]*u.deg,dec=[4,5,6]*u.deg)
>>> sc0 = sc[0]
>>> sc2 = sc[2]
>>> SkyCoord([sc0, sc2])
ValueError: One or more elements of input sequence does not have a length
```

This is counter-intuitive for two reasons:
* it means you can "take apart" `SkyCoord`s, but there's no way to put them back together again easily
* ``SkyCoord(sc)`` works, so I would have thought other ways of passing in frame or `SkyCoord` objects should work.  It seems strange to support lists of `Quantity`s or strings but not lists of our native coordinate objects.

So this PR adjusts the `SkyCoord` initializer so that it can accept lists of `SkyCoord`s, frames, or representation.  So my example becomes:
```
>>> SkyCoord([sc0, sc2])
<SkyCoord (ICRS): (ra, dec) in deg
    [(1.0, 4.0), (3.0, 6.0)]>
```

This may be stretching the definition of "bug" so close to release.  I'll leave it to @embray to make the final call if this goes in 0.4 vs. 0.4.1 (tagged it to 0.4 for now).

cc @astrofrog @taldcroft @Cadair