EVIS: Use a reference for lookup
EVIS: Cache a variable name
EVIS: Lookup variable names using a string
EVIS: Store the stack outside the function

Apparently, constructing and destructing a std::deque can be expensive
(possibly due to the std::string in the structure), and std::stack
doesn't have a clear() method, so use a mutable instance in the class
itself.
Merge branch 'dev/faster-evis' into local/next

* dev/faster-evis:
  EVIS: Store the stack outside the function
  EVIS: Lookup variable names using a string
  EVIS: Cache a variable name
  EVIS: Use a reference for lookup
ctest: Fix a typo
cmTarget: Use else/if trees rather than an if tree

Skips lots of unnecessary string comparisons.
cmTarget: Factor out common code
cmTarget: Fast path for regular properties
cmTarget: Sort special property checks

The LINK_LIBRARIES property is by *far* the most popular. Move it to the
top. TYPE is second, but with more generator expression usage, that may
change in the future.
cmTarget: Use static strings for special property names

The function is called enough that the std::string/cstr comparisons are
expensive from the strlen. Cache the strings for faster comparisons.
cmTarget: Don't set properties on custom targets

Properties are not required on custom targets.
cmTarget: Only copy GenEx expansions when necessary
cmDefinitions: Don't store parent lookups

When looking up scopes, it is faster to not store the lookup locally to
keep the maps smaller and avoid extra allocations and rebalancing.
cmDefinitions: Avoid a find-then-insert when setting variables

Searching the map is not necessary.
cmDefinitions: Use a bloom filter for faster checks

The bloom filter is much faster at checking that the map won't have what
we're looking for so that we can just go to the parent scope instead.
ClearMatches: Only clear matches which were actually set

ClearMatches was clearing many variables which were never set in the
first place. Instead, store how many matches were made last time and
only clear those. It is moved to the cmMakefile class since it is a
common utility used by multiple commands.
ClearMatches: Store match variable names statically

Constructing the names and then turning them into a std::string is
non-negligible in performance testing.
StoreMatches: Minor cleanups
IsOff: Use the length for the string construction

No need to waste the calculation and force the string to call strlen
again.