Variables no longer conflict if they are broadcast equal and rather are promoted to use common dimensions

Fixes #243.

The idea here is that variables should not conflict if they are equal after being broadcast against each other; rather variables should be promoted to the common dimensions. This should resolve a number of annoyances causes by mixing scalar and non-scalar variables.

This PR includes fixes for `concat`, `Dataset.merge` (and thus `Dataset.update` and `Dataset.__setitem__`) and `Dataset`/`DataArray` arithmetic (via `Coordinates.merge`).