Added .. back-tracking to dotdict
Complete Python2/3 portability, initial use of state path/data
o Use explicit relative module loading Python 2/3
o Each state has an optional context it adds to path in data artifact,
  and by convention if it access data, it should add its context to the
  supplied path.  New context(path,extension) method does this.
o The accepts, transition, process and dfa.run methods now take path=
  and data= kwds, to supply the data artifact and path for each state to
  use for accessing/storing data.
o The state_input class specifies the datatype=, which is an array.array
  data type specifier, capable of containing source symbol elements.
  For binary b'...' data, this differs between Python 2 (str/'c' (char))
  and Python 3 (bytes/'B' (ints)).  For textual '...' data in Python 2
  (str/'c' (char)) and Python 3 (str/'u' (unicode)).  The raw symbol
  data is loaded into the data artifact at "path.context_".
o The state_struct class uses the collected array.array's data (at
  "path.context_" in data) via a buffer interface, and use the struct
  module to decode it, and place it into the data artifact at
  "path.context".
o The dfa class is no longer the data repository, in preparatinon for
  making it a subclass of state.
o The dotdict class now fully implements path back-tracking via '..', in
  preparation for allowing states to access data from higher levels of
  the data artifact.  This will allow variable repetition of
  states/dfas, based on data collected by prior states/dfas.