Don't call function_exists() every time debug is set.

Only call function_exists() the first time debug is called.
This saves a few calls to function exists over the span of a test suite
run.
Make merging config a teeny bit faster.

* Don't assign variables in a conditional.
* Calling Hash::get() directly saves 1 function call per merged key.
Add additional tests for making load().

Add tests for not overwriting keys when loading data.
Remove code that doesn't really need to exist.

It looks like all the removed code was not needed as all existing tests
continue to pass with it removed.
Add test for overwriting scalar values with load().
Merge pull request #3513 from markstory/3.0-configure-optimize

3.0 Optimize Configure::load()