match: remove unnecessary setting of self._always

The 'always' class calls its parent constructor with an empty list of
patterns, which will result in a matcher that always matches. The
parent constructor will set self._always to True in such cases, so
there is no need to set it again.
parsers: add a function to efficiently lowercase ASCII strings

We need a way to efficiently lowercase ASCII strings. For example, 'hg status'
needs to build up the fold map -- a map from a canonical case (for OS X,
lowercase) to the actual case of each file and directory in the dirstate.

The current way we do that is to try decoding to ASCII and then calling
lower() on the string, labeled 'orig' below:

    str.decode('ascii')
    return str.lower()

This is pretty inefficient, and it turns out we can do much better.

I also tested out a condition-based approach, labeled 'cond' below:

    (c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c

'cond' turned out to be slower in all cases. A 256-byte lookup table with
invalid values for everything past 127 performed similarly, but this was less
verbose.

On OS X 10.9 with LLVM version 6.0 (clang-600.0.51), the asciilower function
was run against two corpuses.

Corpus 1 (list of files from real-world repo, > 100k files):
orig:   wall 0.428567 comb 0.430000 user 0.430000 sys 0.000000 (best of 24)
cond:   wall 0.077204 comb 0.070000 user 0.070000 sys 0.000000 (best of 100)
lookup: wall 0.060714 comb 0.060000 user 0.060000 sys 0.000000 (best of 100)

Corpus 2 (mozilla-central, 113k files):
orig:   wall 0.238406 comb 0.240000 user 0.240000 sys 0.000000 (best of 42)
cond:   wall 0.040779 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)
lookup: wall 0.037623 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)

On a Linux server-class machine with GCC 4.4.6 20120305 (Red Hat 4.4.6-4):

Corpus 1 (real-world repo, > 100k files):
orig:   wall 0.260899 comb 0.260000 user 0.260000 sys 0.000000 (best of 38)
cond:   wall 0.054818 comb 0.060000 user 0.060000 sys 0.000000 (best of 100)
lookup: wall 0.048489 comb 0.050000 user 0.050000 sys 0.000000 (best of 100)

Corpus 2 (mozilla-central, 113k files):
orig:   wall 0.153082 comb 0.150000 user 0.150000 sys 0.000000 (best of 65)
cond:   wall 0.031007 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)
lookup: wall 0.028793 comb 0.030000 user 0.030000 sys 0.000000 (best of 100)

SSE instructions might help even more, but I didn't experiment with those.

--HG--
extra : rebase_source : c7109ed8bcacbdfc039881a5e4488dc3b5323c2c
encoding.lower: use fast ASCII lower

This benefits, among other things, the case collision auditor.

On a Linux system with a large real-world repo where all filenames are ASCII,
hg perfcca:

before: wall 0.260157 comb 0.270000 user 0.230000 sys 0.040000 (best of 38)
after:  wall 0.164616 comb 0.160000 user 0.160000 sys 0.000000 (best of 54)

--HG--
extra : rebase_source : 933f165e761344f09d67f4476d99aeae434d8a6c
perf: add a way to measure the perf of constructing the foldmap

Constructing the foldmap is a necessary part of operations like 'hg status' on
OS X. This command allows us to measure the perf of constructing it.

--HG--
extra : rebase_source : 148393801af05b4b9c3f2e5fee785af4a65366d0
normcase: for darwin, use fast ASCII lower

Constructing the foldmap is much faster on OS X now. For a large real-world
repo, hg perfdirstatefoldmap:

before: wall 0.805278 comb 0.800000 user 0.790000 sys 0.010000 (best of 13)
after:  wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25)

This is a nice boost to 'hg status', especially with the third-party hgwatchman
extension enabled (which eliminates stat calls). For the above repo, 'hg
status' goes from 1.17 seconds to 0.74.

--HG--
extra : rebase_source : e24654ba221cb906eff79abbfd469188cad3fdd3
dirstate: cache util.normcase while constructing the foldmap

This is a small win on OS X. hg perfdirstatefoldmap:

before: wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25)
after:  wall 0.386331 comb 0.390000 user 0.370000 sys 0.020000 (best of 25)

--HG--
extra : rebase_source : 0c077d4cd16195f07e4780899cc9ec8f01ec70a5