Repository: sunpy/sunpy

Issue:
Differential rotation throws an error when passed a time
<!-- This comments are hidden when you submit the issue so you do not need to remove them!
Please be sure to check out our contributing guidelines: https://github.com/sunpy/sunpy/blob/master/CONTRIBUTING.rst
Please be sure to check out our code of conduct:
https://github.com/sunpy/sunpy/blob/master/CODE_OF_CONDUCT.rst -->

<!-- Please have a search on our GitHub repository to see if a similar issue has already been posted.
If a similar issue is closed, have a quick look to see if you are satisfied by the resolution.
If not please go ahead and open an issue! -->

### Description
When passing a time or time interval to `sunpy.physics.differential_rotation.differential_rotate`, an error is thrown due to the new observer not being in the correct coordinate frame.

A sample code snippet,
```python
import astropy.units as u
from sunpy.map import Map
from sunpy.physics.differential_rotation import differential_rotate
m = Map('/path/to/my_map.fits')
m_rot = differential_rotate(m, 1*u.day)
```

This error is almost certainly due to the fact that the new observer constructed from this new time is in the GCRS reference frame and thus has no lon/lat attributes.

### Expected behavior
Should return a `Map` `m_rot` which has been warped to account for the differential rotation on the Sun over 1 day.

### Actual behavior
```python-traceback
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-17-d7d9f076cb62> in <module>()
----> 1 m_rot = differential_rotate(m,time=1*u.day)

~/anaconda/envs/sunpy-paper/lib/python3.6/site-packages/sunpy/physics/differential_rotation.py in differential_rotate(smap, observer, time, **diff_rot_kwargs)
    580
    581     # Add a new HGS observer
--> 582     out_meta['hglt_obs'] = new_observer.lat.value
    583     out_meta['hgln_obs'] = new_observer.lon.value
    584     out_meta['dsun_obs'] = new_observer.radius.to(u.m).value

~/anaconda/envs/sunpy-paper/lib/python3.6/site-packages/astropy/coordinates/sky_coordinate.py in __getattr__(self, attr)
    598         # Fail
    599         raise AttributeError("'{0}' object has no attribute '{1}'"
--> 600                              .format(self.__class__.__name__, attr))
    601
    602     def __setattr__(self, attr, val):

AttributeError: 'SkyCoord' object has no attribute 'lat'
```

### System Details

  - SunPy Version: 1.0.0
  - Python Version: 3.6.5
  - OS information: macOS 10.14.5



Discussion:

Resolving patch:
diff --git a/sunpy/physics/differential_rotation.py b/sunpy/physics/differential_rotation.py
--- a/sunpy/physics/differential_rotation.py
+++ b/sunpy/physics/differential_rotation.py
@@ -10,6 +10,7 @@
 from sunpy.coordinates import HeliographicStonyhurst, Helioprojective, Heliocentric
 from sunpy.map import (all_coordinates_from_map, contains_full_disk, coordinate_is_on_solar_disk,
                        is_all_off_disk, is_all_on_disk, map_edges, on_disk_bounding_coordinates)
+from sunpy.map.header_helper import get_observer_meta
 from sunpy.time import parse_time
 from sunpy.util import expand_list
 
@@ -579,9 +580,7 @@ def differential_rotate(smap, observer=None, time=None, **diff_rot_kwargs):
         out_meta.pop(key)
 
     # Add a new HGS observer
-    out_meta['hglt_obs'] = new_observer.lat.value
-    out_meta['hgln_obs'] = new_observer.lon.value
-    out_meta['dsun_obs'] = new_observer.radius.to(u.m).value
+    out_meta.update(get_observer_meta(new_observer, out_meta['rsun_ref']*u.m))
 
     if is_sub_full_disk:
         # Define a new reference pixel and the value at the reference pixel.


Test patch: