[Branch]: differential_rotation

This is the feature branch that contains some diff rot code, I think it needs some love so I am opening this so people don't forget about it!!
I cooked this up to check out the idea:


```python
def quantity_input(*f_args):
    """
    A decorator which checks that the inputs to the function can be converted to
    the specified unit where the arguments to the decorator are `Unit` objects 
    via a `Quantity` like `.to` attribute.
    """
    
    def check_accepts(f):
        assert len(f_args) == f.func_code.co_argcount
        def new_f(*args, **kwds):
            args = list(args)
            for i, (arg, f_arg) in enumerate(zip(args, f_args)):
                if f_arg is not None:
                    try:
                        args[i] = args[i].to(f_arg)
                    except (AttributeError, u.UnitsError):
                        raise TypeError("Input to function must be an astropy Quantity object in units convertable to {}.".format(f_arg.to_string()))
            return f(*args, **kwds)
        new_f.func_name = f.func_name
        return new_f
    return check_accepts
```

Mostly adapted from this SO post: http://stackoverflow.com/questions/15299878/how-to-use-python-decorators-to-check-function-arguments

Any argument in the same location as a Unit object in the decorator call will be converted to the unit in the decorator, anything with `None` in the decorator will be ignored.