Make triggering per-branch projects use the SCMTriggerCause.

Swap the usage of TimerTriggerCause for SCMTriggerCause, since it is in fact a source event that is causing the build to be triggered.
This change decouples branch/project name for MultiBranchProject items.

There were a number of places where the MultiBranchProject code assumed that branch and project name matched, which is problematic because branch names may include characters that are illegal in project names.

For example, I can create the branch "mattmoor/foo" whereas '/' is illegal in project names.  Similarly, Util.rawEncode doesn't properly sanitize the name because '%' is an illegal character as well.

This code allows for ProjectFactory to return projects where the branch name doesn't match the project name, so that it can do things like sanitize the name.

NOTE: With this change, I was able to alter https://wiki.jenkins-ci.org/display/JENKINS/YAML+Project+Plugin to work properly with branches containing '/' characters.
Merge pull request #2 from mattmoor/scm-trigger

Make triggering per-branch projects use the SCMTriggerCause.
Merge branch 'mattmoor-complex-names'

Conflicts:
	src/main/java/jenkins/branch/MultiBranchProject.java
[maven-release-plugin] prepare release branch-api-0.2-beta-3
[maven-release-plugin] prepare for next development iteration
Make triggering per-branch projects optional.

This change adds a BranchProperty whose effect is to disable MultiBranchProject from triggering builds when changes are detected on annotated branches.

This enables users to use a DSL to describe projects that should exist for each matching branch, but only run under non-source triggers (e.g. Timer, User, ...).