Initial commit to move to cmake

This commit:
* adds cmakelists files
* updates locations of some header files in #include-s
* updates genkinds.pl to make it a bit cleaner and allow an extra
  option, needed for this compilation
* adds automatic version number from git (release will have to do it
  differently, build should not fail for lack of git)

But it also breaks the make-based build (do we want it? If so, all we
need to fix are the #include-s). Also it lacks tests (CTest should be
used). Also, it doesn't check for bison and flex.

The build works with -j100, parallel builds should now succeed
without a problem (dependencies are correctly handled)
Update GetGitRevisionDescription CMake module
Rewrite instructions for building
Rename m4-extra/ to cmake/modules/

Since we are not using M4 in our build system, the former name was not fitting.
The new name mirrors the directory structure used by LLVM.
Removing Makefiles
CMake modules for identifying hash_set and hash_map

Part of the work needed for #21. The modules define macros for looking for
hash_set and hash_map under a variety of headers, namespaces, and class names.

The modules have only been tested on Clang 3.3svn on OS X, but are hopefully
easy to tweak if I got something wrong.

This also introduces an include/config.h file generated by CMake. (There may be
a better place to put it.) The remaining work involves changing source files to
use the macros defined in config.h.
Remove vestiges of the Makefile build system
Source changes to use the correct hash_set et al.

This is most of the remaining source changes for #21, but while investigating
further, I arrived at the conclusion that many of the hash functions for C
strings are incorrect, leading to #26. But, that can be addressed independently
of the CMake conversion.

The build succeeds now on Clang 3.3svn on OS X, and needs to be tested on at
least Linux as well.

The CheckCxxHash*.cmake modules could be rewritten to remove redundancy, and
need to set the -std=c++0x flag on C++ compiler invocations, but this isn't
possible without further source changes.
Clean up custom hash functions

This change eliminates most custom hash functions where possible, e.g., using
std::hash<std::string> instead of a custom hash that calls .c_str() on the
string and then hashes the address of the C string.

It also introduces a simplistic C string hash function and equality predicate
that can be used when the data stored in the hash container is actually a C
string.

This change has only been tested with Clang 3.3svn on OS X, and has not been
evaluated for performance.

I think this closes #21.
Remove trailing whitespace
Remove stuff that doesn't make any sense
Fix screwing up build type flags.

The description of the build type was wrong,
and none of this stuff needs to be set up anyway.

Check the warning flags before adding.

Don't use -mtune=native by default, since that will
probably end in tragedy for someone.
Fix typo for required flags in hashmap/set checks
Enhance warnings
Check for flex and bison
Fix build in C++11 mode
Fix a large number of -Wignored-qualifiers