Minor: Fix MSVC warning
EnvironmentGroupModel: More API fixes
EnvironmentWidget: Always display placeholder line

Implement a custom proxy model that just adds another line at the end of
the list. This line servers as a placeholder item. When setting data on
that placeholder item, the EnvironmentWidget instance is notified and
takes care of adding the actual value to the EnvironmentGroupModel
instance.

The new PlaceholderItemProxyModel should be useful for similar widgets
as well. For example, the BreakpointModel uses a similar approach,
but includes the placeholder item directly in the source QAIM. => Cleanup up
BreakPointModel and use this proxy to simplify code.

REVIEW: 114197
Replace unused Declaration::isFinal with Declaration::isDeprecated.

The latter is unused as of yet but will become actually useful.
The isFinal was in a completely wrong place and indeed is obsoleted
by ClassFunctionDeclaration::isFinal and ClassDeclarationData::Final.

CCBUG: 183611
Cleanup: Remove obsolete branches.

The emptyConstant{Qualified,}IdentifierPrivateIndex functions checked
for zero indices of the empty items which is obsolete as
ItemRepository::index never returns zero.

Furthermore, call the ...Index functions in the init functions to
ensure the static values are properly initialized before they are
accessed from potentially multiple threads.
Optimize: Cache data for empty {Qualified,}Identifiers.

Even on a smallish project (GammaRay), Identifier() is called ca.
567600 times, whereas QualifiedIdentifier() is even called 2257000
times.

Up until now, each object construction lead to a call to
ItemRepository::item which internally uses mutex locks as well as
the item repository hash lookup to find the item.

Instead, we now allocate a static const object on the stack and
reuse that for empty {Qualified,}Identifiers and thereby speed up
this codepath tremendously.
Cleanup: Give internal linkage to helper functions.
Add missing qHash functions for some Indexed... types.

This is esp. required for IndexedQualifiedIdentifier, which is
used in a QHash. It worked without the function by using the cast
operator to QualifiedIdentifier, which has a proper qHash overload.
This conversion is costly though so should be prevented if possible.
Minor: remove dead code.
Remove google sparse/dense hash code.

Replace the single place where it was used with a simple QSet.
Also cleanup the code, as this is not a hot-path thus the performance
is really not that important here.

Comparing before/after showed that DUContext::imports is roughly being
called 10k times when importing GammaRay as a project with a clean
cache. Parsing takes ca. 40s, of which 0.08s where spent in ::imports
with the old code. The new simpler QSet based variant takes ca. 0.1s
which is just as fine - esp. if we can get rid of so much code!
remove FOREACH_ARRAY, just use Qt's foreach and be done with it...
Set version to 1.6.0
Merge branch '1.6'

Conflicts:
	CMakeLists.txt
Use non-camelcase header for KIdentityProxyModel

Apparently the forward include header for kidentityproxymodel.h has just
been added recently in kdelibs v4.10.0.
Revert "remove FOREACH_ARRAY, just use Qt's foreach and be done with it..."

Qt's foreach does a copy and {K,Q}VarLengthArray is not implicitly
shared. Thus its potentially costly to copy these containers.

I'll enable C++11 soonishly and then we can replace FOREACH_ARRAY
with range-based for loops.

This reverts commit cec794b517f1415c696735ddb0144118e9996c7b.
Make it possible to add a filter for targets via the context menu.

The project managers will be adding support for filtering targets
in follow-up commits.
Merge branch '1.6'
Extend test to cover the case where we filter by the project-root path
Sort open documents by URL only in QuickOpen
Optimize: decrease size of ProjectFile by 8 bytes.

The project name can be looked up on demand, it is only required for
the actively selected file in the quickopen model.

As these structs are created in high order, saving 8 bytes here can
simply add up to quite a lot of memory saved. Furthermore, it speeds
things up as copying is faster for smaller structs.