change quantity repr to act more like ndarray's repr

This PR changes `__repr__` on `Quantity` to more closely match the behavior of numpy arrays.  This is particularly important for arrays.  For example, the old behavior (without this PR):
```
In [1]: randn(10) * u.m
Out[1]:
<Quantity [ 0.12123584  0.13578854  1.39497863  0.76236175  1.13031675 -0.72931728
 -0.605758   -0.16825014 -0.2757982  -1.85617019] m>
```
While this PR changes it to look like:
```
In [1]: randn(10) * u.m
Out[1]:
<Quantity [ 0.32134233, -1.69807677,  0.28815113,  1.87607359,  0.49432086,
        1.5854339 ,  0.98095087,  0.52672927,  0.6175431 , -0.01632019] m>
```
The difference is minor, but I think the latter is more readable, particularly because the latter case properly accounts for the width of a terminal (while the former does not)

Note that this makes the significant change of no longer using `str` to generate the representation of value of the quantity.  I think this is a *good* thing, because by design, `__str__` and `__repr__` are different methods to be used in different situations.  This is of particular relevance for `astropy.coordinates.Angle`, which currently prints something like:
```
In [1]: Angle([1,2,3.5],'hr')
Out[1]: <Angle [u'1h00m00.00000s' u'2h00m00.00000s' u'3h30m00.00000s']>
```
but after this PR, it looks like:
```
In [1]: Angle([1,2,3.5],'hr')
Out[1]: <Angle [ 1. ,  2. ,  3.5] hourangle>
```
(note that this probably renders #1322 no longer relevant) 

cc @mdboom @taldcroft @astrofrog @adrn