Add a new decorator for functions accepting quantities.

This is something that has cropped up in a discussion inside SunPy about how to verify the inputs on functions which expect quantities.

We often have the situation where the input to the function is a quantity (or many) and because it is representing something physical, it is expected to be convertible to a specific (usual) unit. i.e. convertible to degrees for a on sky angle. This decorator will check all arguments to a function and make sure that they are convertible to the specified units and raise a nice error if they are not.

The decorator expects a number of arguments equal to the number of arguments to the function and any keyword arguments that need to be verified.

i.e.

```python
@quantity_input(u.deg, u.deg, None, distance=u.km)
def myfunction(ra, dec, someflag, distance=1*u.au):
     ra.unit == u.deg
     dec.unit == u.deg
````

p.s. I am aware that this is not the place for this function in the code base and it needs tests etc, but I thought I would first solicit opinions about if it belongs in astropy _at all_.
I like the duck-typing approach but agree the error message may be confusing. Note that there could be two possible reasons for an `AttributeError`: `arg` has no `unit` and `unit` has no `is_equivalent` method (do update the comment too!). Maybe,
```
if hasattr(arg, 'unit'):
    error_msg = 'a "unit" attribute without an "is_equivalent" method'
else:
    error_msg = 'no "unit" attribute'
raise TypeError("Argument '{0}' to function has '{1}' {2}. "
                "You may want to pass in an astropy Quantity instead."
                .format(var, wrapped_function.__name__,
                        error_msg
```