use a boolean flag for loading default config

this prevents problems where the configarray is emptied deliberately and
then unintnetionally re-loaded with the default config
settings -> config

This includes tweaking the string template system
don't needlessly reimplement trait functions
nolonger necessary

refactored out of existence
_ prefix protected var
Add Controller::components() and addComponent()

These methods aim to increase cohesion and consistency between
Controller/View/Table classes by having similar methods with the same
purpose people have fewer conventions to learn.
Update View & Helpers to use method names consistent with features.

Use helpers() and addHelper() as these methods are more congruent with
other parts of CakePHP.
phpcs fix
Move unload() into ObjectRegistry.

Make unload() and reset behave similarily. Both remove objects and
detach events.
Make addComponent() also set the property.

This makes it a bit more useful than just being a proxy.
Fix failing tests.

A bunch of tests relied on old behavior, update those tests so they
continue to pass.
Merge pull request #3129 from AD7six/3.0-config-view

update View NS to use config, not settings
Changing the way eager loaded values are nested under each result.

The old way was making ResultSet confused about hydrating results having
the same association alias in the associaitons map
Fixing some failing tests
Adding joinData to the target relation array wehn using matching

The scenario that c41f40cd was wondering about came to be sooner than
expected.
Completing test for showing it is possible to use duplicate associaiton
alaises in contain
test file was .. misnamed :|
Add merge option to InstanceConfig trait

This addresses the problem raised in b81ebffe
merge by default
make config chainable