Whups, missed a GROUP_NAME
Move the implementaion of MurmurHash3 into it's own files.  Several other changes:
* Templated Add() methods for objects and pointers to hide the required reinterpret_cast<>ing from the user. We shall be the hero the user deserves...
* Provide a Reset() method which returns the object to the seed state;
* End() changes the internal state when finalising, so (hash3.End() == hash3.End()) will evaluate false. This is naively surprising, so [1] make End() also Reset() the object to reduce ambiguity, and [2] provide a Value() method that returns the finalised hash, without altering the state.
Work in progress: test the hash tools.