DerivedSetting not a DefaultSetting anymore
Derived settings to replace their DerivedSetting, not go at the beginning
Derive settings only under the scope of the DerivedSetting
Decouple DefaultSetting from Setting/DerivedSetting; BuildCommon.derive() produces default settings by default
Put sbt's derived settings under GlobalScope
Optimise scope intersection for GlobalScope
Couple of fixes
Improve SettingsExample to allow orthogonal scopes (like projects/tasks) at a certain nestIndex
Add 2 derived settings tests:

1) non-default derived settings, if they produce anything, the settings
   they produce must supersede previous assignents (in the settings seq)
   to the same key.

2) even if a derived setting is scoped at a higher scope (e.g.
   ThisBuild) the settings it produces are scoped at the intersection of
   that (the defining) scope and the scope of the triggering dependency.

2 is particularly nice as it enables this behaviour:
    derive(b in ThisBuild := a.value + 1)
    a in project1 := 0
    // a could be defined in all projects
    ==>
    Now (b in project1).value == (a in project1).value + 1 == 1
    and similarly in all other projects
    all with a single derived setting
Merge pull request #1036 from dansanduleac/derivedSettings

Allow derived settings to replace previously-defined but non-default settings