rearrange handling of builtin bindings to make rules simpler

Now, a 'build' block can override any special binding like 'command'
or 'description' if it needs to.
update docs to clarify scoping rules
drop the "rules" tool completely

I had already broken this earlier, but the refactor of variable handling
broke it completely.
fix build on non-Linux glibc systems

ninja-build does not build on non-Linux archs, such as
GNU/kFreeBSD and GNU/Hurd.

The problem is that the GetProcessorCount() implementation for these
architectures is the sysconf() one, but <unistd.h> has not been
included, causing sysconf() and _SC_NPROCESSORS_ONLN to not be
declared. Another solution (which is the one I chose) is to make use
of the "linux" implementation which uses get_nprocs(), which is a GNU
extension and thus available for anything using GNU libc.
always set GTEST_HAS_RTTI=0 in all testing code
ManifestParser constructor accesses its first argument, don't pass NULL

The constructor does

  env_ = &state->bindings_;

so env_ is effectively set to offsetof(ManifestParser, bindings_).  This
will blow up if env_ gets dereferenced -- this doesn't seem to happen in
these tests, but it's less confusing with this patch.  Also, passing &state is
consistent with the rest of this test.
Merge pull request #479 from nico/testfix

ManifestParser constructor accesses its first argument, don't pass NULL
if windows and not msvc, set platform to mingw
RPM spec file should use correct versioning scheme and list all build dependencies
Use correct Fedora versioning scheme
Merge pull request #484 from TheOneRing/fix_mingw

if windows and not msvc, set platform to mingw
Removed re2c build dependency from RPM spec file
more verbose error (including path) when depfile fails to load
Merge pull request #489 from sgraham/err-message-depfile

more verbose error (including path) when depfile fails to load
Merge pull request #485 from petrh/fedora-rpmbuild

RPM spec file fixed to work properly on recent Fedora releases
add a release checklist so I won't forget steps in the future
mark pools as experimental in the docs
util.cc: Reusing windows workaround for cygwin.

This fixes:
src/util.cc: In function 'double GetLoadAverage()':
src/util.cc:337:28: error: 'getloadavg' was not declared in this scope
Merge pull request #498 from pck/cygwin

util.cc: Reusing windows workaround for cygwin.
add syntax for checking versions