Add optional branch to ModuleID

Allow an Ivy branch to be set on the project's module, as well as on dependencies.
This is a work in progress, which for now adds the `branch: Option[String]` to `ModuleID` while preserving backwards-compatibility, but the plan is to fix up the whole of sbt so that it's aware of branches where relevant.

Other changes planned:
* change the default Ivy patterns to include the `([branch]/)` after the module name