Dataset.reindex_like and DatasetArray.reindex_like

This provides an interface for re-indexing a dataset or dataset array using
the coordinates from another object. Missing values along any coordinate are
replaced by `NaN`.

This method is directly based on the pandas method `DataFrame.reindex_like`
(and the related series and panel variants). Eventually, I would like to build
upon this functionality to add a `join` method to `xray.align` with the
possible values `{'outer', 'inner', 'left', 'right'}`, just like
`DataFrame.align`.

This PR depends on PR #71, since I use its improved `copy` method for
datasets.
Refactored Dataset.reindex and generalized xray.align

The new xray.align can handle an arbitrary number of arguments, as well as
four different join options copied from `pandas.DataFrame.align` ('inner',
'outer', 'left' and 'right').

This gives us most of what we need to flip a switch and start automatically
aligning dataset arrays when they are used in mathematical operations. We'll
need to decide if we want to default to outer joins (like pandas) or inner
joins (which are less likely to blow up due to lack of memory or CPU).
Complete rebase on DatasetArray->DataArray
Merge pull request #77 from akleeman/Dataset.reindex_like

ENH: Dataset.reindex_like and DatasetArray.reindex_like