Command line and error changes:

* Command line now accepts a parameter to specify the root directory.
  This is combined with the script/state/interface paths to form the
  directory of the files.  By default, these values are:

    root_dir:       /etc/pynetwork
    script_dir:     scripts
    state_file      run/state
    config_file     interfaces

  After command line parsing, the root directory is combined with the
  others to form an absolute path.

* The entry point is now in a "main" function and the code that calls
  that handles any exceptions and prints a message as needed.
Implemented list and query.

* List will show either all interface and group stanzas or those
  specified on the command line.  If an allow is specified, it will only
  show interface and group stanzas that match that allow.

* Query will show the current state of an interface group or stanza.
  The output will be in the form of <name>=<logical> with one item per
  line.  If no arguments are passed, then all configured interfaces and
  groups will be shown.  If an argument is passed, the only those will
  be shown.  If an allow is specified, then only matching interfaces and
  groups will be shown if configured.