sbt/sbt — pull request #1312 by jsuereth (2014-05-06 21:21:22+00:00)
Title: Expand the DSL abilities with Project manipulations

This does the following:

* Split loading of configuration into two pieces: Discovery and Resolution
* Discovery is when we find all projects defined in a config file *and* load all Setting/Manipulation/Definitions
* Resolution is when we take *all* the .sbt + .scala files associated with a project, do the AutoPlugin resolution and finalize the `Project` instance
* Migrates the DSL of `.sbt` files to use `sbt.internals.DslEntry`.
* Adds `ProjectManipulation` as a DSL option instead of just `Seq[Setting[_]]`
* Applies project manipulation functions before finalizing projects
* Add `enablePlugin` and `disablePlugin` to the DSL.
* Update tests.

Note: @bjburton informs me we should upgrade to using Fiber instead of a DSL.

Fixes #1213 and #1299

Also, I expect this one may take some time for review, but we should still be prompt. Review by @eed3si9n cc> @cunei