lookup3: Add Bob Jenkins' hash functions

I often need a simple, good and reasonably fast hash function for
various throw-away programs. Bob Jenkins' lookup3 function satisfy
those requirements.

This is just an initial commit of some slightly modified version I had
lying around.
lookup3: Rename to jenkins_hash

The exported functions are called jenkins_hash*. Make the filenames
reflect that fact.
jenkins_hash: Fix rename oversight

When renaming a file, also update all uses of the old name...
jenkins_hash: Simplify endian madness

Now that POSIX has finally decided to standardize <endian.h>, there is
hope that that header will become available everywhere. Until the
standard is published and implementations start using the
non-__-prefixed names, we still have to check __BYTE_ORDER etc.

Also, there is really no point in providing jenkins_hashbig on
little-endian machines and vice-versa.
jenkins_hash: Another rename fixup

The renaming should also have changed the include guard name.
jenkins_hash: Further endian simplifications

Since I decided to only define and expose hash_xxx on xxx-endian
machines, there's really no point in keeping the names hashlittle and
hashbig. So simply always provide two functions, hash and hash2, where
only the implementation depends on the endianness of the machine. This
removes the ugly endian-detection from the header.
jenkins_hash: Remove duplicated comments

There's no reason to have identical comments in all 2x2
implementations of jenkins_hash{,2}. Remove them from the last three.
jenkins_hash: Remove VALGRIND conditionals

I'm a huge fan of Valgrind. But compiling a version of the functions
just for eliminating access violation warnings is rather
pointless. One would at least also have to make sure that the two
versions produce identical output; otherwise one might as well just
have an #if VALGRIND function doing "return 0;". So I'd much rather
test the code that actually ends up being used, and then verifying
that the accesses do not cross word boundaries.

This change also makes the functions much easier to read, since
there's less vertical distance between the code handling the aligned
and unaligned cases.
Makefile: Add jenkins_hash.o
Simple graph utilities

These are simple utilities I wrote for computing the set of connected
components of a graph and for finding all maximal cliques.

Because I only needed this for a graph read from stdin, the graph
implementation is "append-only", meaning that nodes and edges can be
added but not removed. This in particular simplifies finding the
connected components, since one can simply keep track of those as
edges are added.

graphcomponents is a rather trivial front-end; all the work is already
done while the graph is being built in memory.

maximal_cliques has worked reasonably well for the tasks I originally
wrote it for, but there may still be room for improvement. But before
trying that, I need to find some appropriate data to test it on. Also,
obviously, I'd really like to add some correctness tests.