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_.
This can be removed entirely since we already include the backport of `OrderedDict` in `astropy/utils/compat`.  For that matter could you please move the funcsigs module there too?  Yes, it is a copy of an external module, but it is only included explicitly for backwards compat, so it should go in utils/compat instead.