Add introduction to the setting system.
Fix spelling issues in architecture document.
Merge pull request #1173 from sbt/wip/more-architecture

Add introduction to the setting system
Add changes documentation for 0.13.1->0.13.2
Merge pull request #1174 from sbt/wip/release-notes-0.13.2

Add changes documentation for 0.13.1->0.13.2
When fragmenting Defaults, we mixed back settings in the wrong order.

* packageArtifacts is not cleared by defautlSettings
* Added a test for this behavior (this one test should ensure the ordering for most settings is correct.)

Fixes #1176
Merge pull request #1177 from sbt/wip/issue-1176

When fragmenting Defaults, we mixed back settings in the wrong order.
Allow end users to add Plugins, not just AutoPlugins

This allows plugins to define a Plugins instance that captures both the
plugin and its required dependencies.

Also fixed up some scaladocs that were wrong.
Merge pull request #1189 from jroper/project-add-plugins

Allow end users to add Plugins, not just AutoPlugins
sbtTransformHash -> e:sbtTransformHash
Test for missing dependencies of macro arguments

Add a test which shows the problem of not properly capturing dependencies
of macro arguments.
Record dependencies on macro arguments

Macros take arguments as trees and return some other trees; both of
them have dependencies but we see trees only after expansion and
recorded only those dependencies.

This commit solves this problem by looking into the attachments of the
trees that are supposed to contain originals of macro expansions and
recording dependencies of the macro before its expansion.
Improve unit testing compiler

It was not possible to make `ScalaCompilerForUnitTesting` compile several
files in different runs, which means that it was not possible to compile
and use a macro in a test case, since macros cannot be used in the same
compilation run that defines them.

This commit allows a test case to provide multiple grouped snippets of
code that will be compiled in separate runs.

For instance :
    List(Map(<snippet A>, <snippet B>), Map(<snippet C>))

Here, <snippet A> and <snippet B> will be compiled together, and then
<snippet C> will be compiled, and will be able to use symbols defined
in <snippet A> or <snippet B>.
Unifies AutoPlugin and RootPlugin

* Separates def select into def trigger and def requires.
* Setting trigger = noTrigger and requires = empty makes a plugin a
root.
Unit test for dependency extraction from macro applications

Add a unit test which checks whether we capture dependencies introduced
by arguments to macros. Those dependencies are special because macros
get expanded during type checking and arguments to macros are not visible
during regular tree walk.
Add scripted test for nested macros

Add test analogous to source-dependencies/macro-arg-dep
but check if dependencies of nested macro applications are handled
properly. Nested macro applications are tricky because we have to look
into original (before macro expansion) trees recursively. This test verifies
that.
fixes #1196
Updated comments. Typo fix per @jozic
Adds conflict check at the end to enforce exclusion requirements.
Merging AutoPlugin work from "0.13.2" branch