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
We use it like:
```scala
libraryDependencies += "foo" % "bar" % "0.1.0" onBranch("trunk")
```
(no need for the former brackets)

I'll change it to branch("trunk") and update the PR.