Dataset dimensions always appear in sorted order

Prior to this patch, dimensions appeared in the order in which they were added.
This was generally fine, but it means that some output which depends on dimension
order (e.g., dataframe output) does not always appear the same, depending on
the order in which dataset variables were added. This patch now stores
dimensions internally in an unordered dict, but sorts the dimensions into
alphabetical order every time they are accessed.
Altered dimensions to use SortedKeysDict

This ensures that dimensions are always iterated over in sorted order without
imposing any overhead.
Merge pull request #83 from akleeman/unorder-dimensions

ENH: Dataset dimensions always appear in sorted order