Ensure Longitude initialized with Longitude keeps same wrap_angle by default

This follows up on an issue noted in #2690, that when `SpericalRepresentation` is initialized with a `Longitude` with a different `wrap_angle`, that wrapping is overridden. With this PR, `Longitude` will keep a possible `wrap_angle` from its input angle, unless explicitly overridden. Furthermore, for the representations, `broadcast_quantity` is rewritten so that it uses `Quantity._new_view` instead of a class initialization, so that, again, `wrap_angle` is preserved.
```
In [1]: from astropy.coordinates import Longitude

In [2]: lon = Longitude('90d')

In [3]: lon.wrap_angle
Out[3]: <Angle 360.0 deg>

In [4]: lon = Longitude('90d', wrap_angle='180d')

In [5]: lon.wrap_angle
Out[5]: <Angle 180.0 deg>

In [6]: lon = Longitude(lon)

In [7]: lon.wrap_angle
Out[7]: <Angle 180.0 deg>

In [8]: lon = Longitude(lon, wrap_angle='360d')

In [9]: lon.wrap_angle
Out[9]: <Angle 360.0 deg>
```