Python 2/3 compatibility
o Use next( iter ) instead of iter.next()
o Import reprlib instead of repr for size-limited repr
o Basic bytes, str and unicode handling.  Not yet acceptable, but
  basically functional.
o Allow specifying a type, container or predicate to validate the
  "alphabet" accepted by a dfa.  This differs from the concept of
  alphabet in greenery (the exact set of input symbols accepted by the
  greenery.lego/fsm).  Rethink this.
o Allow specifying the Python array.array data type that that input
  symbols are saved to.  This is because struct requires something with
  a Python buffer interface, to convert input symbol data into other
  data types.  When we start shovelling input symbols into a
  'destination' dotdict entry, we may want to rethink this; do we really
  need a buffer interface?  Probably...
o Implemented 'dotdict', in preparation for storing output of the state
  machinery into an arbitrary dot-separated notation data structure.