setup: check if mercurial/util.h has been modified

Before, if mercurial/util.h was modified but *.c wasn't, no extension
was rebuilt.

--HG--
extra : rebase_source : 6a892511e20b024e438e099cd230d719d40db6eb
extra : amend_source : 46430b6383b0d2caa419ff281f5be3e8fc103159
parsers: state is a char, not an int

--HG--
extra : rebase_source : 71daec076e1ae6d175756108603ecd430e26abab
parsers: use Py_INCREF safely

--HG--
extra : rebase_source : 0d281ac4d698d69ecd9ceb8e79bde23257ad9ec3
parsers: correctly handle a failed allocation

--HG--
extra : rebase_source : 6c17243274c1bd68483ddbb438e097fd0134cc8b
parse_manifest: rewrite to use memchr

memchr is usually smarter than a simple for loop. With gcc 4.4.6 and glibc 2.12
on x86-64, for a 20 MB, 200,000 file manifest, parse_manifest goes from 0.116
seconds to 0.095 seconds.
plan9: update util.py for cpython 2.7 build
log: make file log slow path usable on large repos

Running "hg log <pattern or directory>" on large repos took a very, very long
time because it first read ctx.files() for every commit before even starting to
process the results.

This change makes the ctx.files() check lazy, which makes the command start
producing results immediately.