Add support for CMake APPEND_STRING.

Based on the work by Ben Wagner, but extended and properly tested.

REVIEW: 115095
Cpp: Port to kdevplatform's switchDefinitionDeclaration
Merge remote-tracking branch 'origin/4.7'
Adapt to KDevplatform changes.
Adapt to KDevplatform changes.

Note the call to findLocalDeclarations was a no-op _and_ gets
called again via BaseContext::localDeclarations anyways.
Fix another build failure originating from GCC-4.7 bug.

Owing to a bug in GCC versions less than the 4.8, we encounter the following build failure when compiling kdevelop with GCC-4.7:

`KDevelop/projectmanagers/custommake/custommakemanager.cpp:46:7: error: looser throw specifier for ‘virtual CustomMakeProvider::~CustomMakeProvider()’
In file included from KDevelop/projectmanagers/custommake/custommakemanager.cpp:41:0:
KDevelop/projectmanagers/custommake/../../languages/plugins/custom-definesandincludes/idefinesandincludesmanager.h:96:17: error:   overriding ‘virtual KDevelop::IDefinesAndIncludesManager::BackgroundProvider::~BackgroundProvider() noexcept (true)’`

The GCC bugzilla (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53613) suggests a single workaround in this particular instance: adding a definition to the destructor outside the class definition.

This fix was prompted by several callers to #kdevelop whom all seemed to be running afoul of this issue. As GCC-4.7 is still in moderate use, it may be worth it to just bite the bullet and apply this for now. I still lack commit access and would be happily credited as "Craig Tenenbaum" <zarathustra.zoroaster@gmail.com>

REVIEW: 119709