Cleaned up Dataset indexing and groupby

Changes of note:

- Indexing a Dataset with an integer no longer drops 0-dimensional variables.
  They are kept around as scalar values (without dimensions). This let me
  remove at least one nasty hack.
- Restructured the internals of groupby and DataArray.concat (fixes #81).
- Removed support for grouping XArray objects since they will no longer be
  in the public API.
- Added an apply method to DatasetGroupBy (implements #78).