Converted to Groovy for simplification

(cherry picked from commit 6ab4cd64ef1fc34ce63aab866151ef68cb2b491c)

Conflicts:
	test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
[FIXED JENKINS-18589]

Use DescribableList to handle the copy-on-write semantics correctly. The vector class just doesn't cut it, and we've been setting a new value to this field, which will violates all sorts of the concurrent programming practice.

This change has the nice side effect of removing {{class="vector"}} from the persisted XML. A test is added to make sure we can still read back such an XML.

(cherry picked from commit 7facc7733c7040536d4074a2c5805b75ee1d8f35)

Conflicts:
	test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
[FIXED JENKINS-18677]

Integrated bytecode-compatibility-transformer that allows core to
do signature changes on properties that plugins might depend on.

The library performs necessary bytecode transformation to achieve this.

The first use of this is to fix plugins that looks for List
AbstractProject.triggers, thereby resolving JENKINS-18677.

For the time being, I'm not loading such compatibility annotations from
plugins, but I did code that in PluginManager. Let's see how this
feature work out for a while in the core, and if it looks stable and
solid, we'll open it up to plugins at that point.

(cherry picked from commit 47de54d070f67af95b4fefb6d006a72bb31a5cb8)

Conflicts:
	changelog.html
	pom.xml
[JENKINS-18677] bug fix

(cherry picked from commit d8f74cf86644ff338aff53879f674b971c11967e)
[JENKINS-18677] more bug fix

(cherry picked from commit c9282915416653ff6fc904c3f9e467cb2d46ff3e)