* The testdaq.io package shall provide a single public access point for 
  implementing software.
* The public access point to the testdaq.io package shall provide individual,
  descriptive read commands for each data type.  For instance:
    readWrappedMonitorRecord()
    readMonitorRecord()
* The testdaq.io package shall return all Exceptions to the implementing 
  software if practical.


* The testdaq.io package shall have the ability either to read sequentially any
  number of records from a ZIP file or to read any number of records from a
  DOMHub at a given time.
* The testdaq.io package shall use the methods defined in DOMHubApp to interact
  with one DOMHubApp at a time.

* The testdaq.io package shall have the ability to read or skip an arbitrary
  number of records from a file.
* When reading from a file, the testdaq.io package shall allow the user to
  select one or more DOMs for reading, reading all available DOMs by default.

* The testdaq.io package shall have the ability to read an arbitrary number of
  records from a DOMHub.
* The testdaq.io package shall return the next record(s) available when
  reading from a DOMHub.
* When connecting to a DOMHub, the testdaq.io package shall allow the user to
  select one or more available DOMs for reading.
  - Connecting to a DOMHub and selecting a given DOM shall open exactly one
    channel per data type.
  - Failure to select at least one DOM for reading will cause the connection to
    the DOMHub to be closed.
  - It shall be possible to close one connection to a DOM without affecting the
    other connections to that DOM or those of other DOMs.
* A user connected to a DOMHub shall have the ability to determine which DOM
  shall next be read by entering a DOM Id String.

* The testdaq.io package shall be expandable to read new data formats.
* The testdaq.io package shall translate formatted binary data into generic
  data to be manipulated by the user.
* The testdaq.io package shall provide a sub-package where such generic data 
  types are defined.
