ENH: Improvements to as_xarray

1. Moved tuple unpacking logic from Dataset._as_variable to as_xarray.
2. Added unit tests.

My intention is to add an as_xarray cast to the top of most functions in xray
which expect arguments as XArray or DatasetArray objects, mathematical
operations excluded.