Alter the DSL slightly to use explicit DslEntry types for settings.

* Create new DSLEntry type for settings so we can categorize what we parse
* Use DSLEntry to help solve the Setting[_] vs. Seq[Setting[_]] implicit fun.
* Hack away any non-Setting[_] DSLEntry for now.
* Add test in build.sbt to make sure the new DSL works.
Rework sbt's loading mechanism to allow `ProjectManipulation` DSL entries to take effect.

This does the following:

* Fragments loading into two stages:  Discovery + Resolution
* Discovery just looks for .sbt files and Projects, while
  loading/compiling them.
* Resolution is responsible for taking discovered projects and
  loaded sbt files and globbing everything together.  This includes
  feeding the project through various manipulations, applying
  AutoPlugin settings/configurations and ordering all the settings.
* Add a bunch of docs
* Add direct DSL `enablePlugins` and test
* Add direct DSL `disablePlugins` and test.
Add test confirming that multiple.sbt files can contribute to enable/disablePlugin DSL.
Bump travis memory settings.
Merge pull request #1312 from sbt/wip/dsl-enable-plugins

Expand the DSL abilities with Project manipulations