Merge pull request #7 from DaveAckley/master

Adding Mersenne Twister (part 1)
Fixed DHS. Sorters are not biased anymore.
Merge branch 'master' of http://github.com/Sixstring982/MFMv2
Ugh, giant horrible monolithic flag-day commit, with changes
everywhere, including:

 - Putting virtually everything in the MFM namespace for proper
   big-system cleanliness.  Only exception is a tiny bit of extern "C"
   stuff in fail.h.

 - Introducing typedefs SPoint and UPoint for Point<s32> and
   Point<u32>, respectively.  Terminating Point<int> with prejudice.

 - Reworking EventWindow to have only two data members, a Tile& and a
   SPoint.

 - Integrating the new Random stuff, so that every Tile has its own
   random source.  The Grid has a separate Random for its purposes
   (which includes seeding the Tiles).  Hopefully there are no
   remaining uses of system rand(), srand(), random(), or srandom()..

 - Making low-level routines like Tile::GetAtom FAIL on bad args
   instead of silently accessing crap.

 - Redoing Grid::PlaceAtom so it doesn't FAIL and so I can somewhat
   understand it.

 - Changes to the DREG odds, and the DHS initialization.  E.g., space
   the emitters and consumers at two's rather than fours, and have a
   double-row of consumers.  With the recent 'debiased sorters'
   commit, things are starting to look plausible.

 - Changed the 'l' display so sorter thresholds and data values are
   both displayed on the same color scale.  This looks much prettier.
   Use the normal display to distinguish sorters from data... (Maybe.)

 - Stuff I can't remember.