Variable frequency of operation and IF bandwidth for radios.
Sundry changes and improvements.

FieldFox.py
  * __init__() now supports opening a session with the FieldFox with:
    - Arbitrary sweep bandwidth.
    - Arbitrary number of sample points.
    - Arbitrary S-parameter measurements.
    - Arbitrary measurement formats. However, only "phase", "uphase", and "raw"
      have seen much use in this project, and "raw" doesn't yet work quite
      right. Exactly how to handle the result of other measurement types hasn't
      been specified, so if you intend to use something else, read through the
      code and make sure your particular measurement will be handled sensibly.
  * Added reasonable docstring for __init__()
  * sample() now returns vector results and is capable of handling both real
    and complex result formats (though everything other than "raw" is currently
    assumed to be real.

samplesink.py
  * The __init__() method for Samplesink now takes dataformat and frequency
    arguments.
  * Initializing or resetting a Samplesink now gives it a random UUID.
  * Rather than reset() calling close(), reset() does everything close() does,
    and more.
  * ReprPrinter and JSONSender now pas dataformat and freq to the Samplesink's
    initializer.
  * JSONSender now uses the SampleObject defined in encoding.py and sends its
    __dict__ as a JSON dictionary.

encoding.py
  * This file describes the SampleObject class, which has the purpose of being
    cleanly converted to and from JSON for transmission of sample data over HTTP
    This file is shared with music-server, so any changes made here should be
    made there as well. This author uses a hardlink to enforce that constraint.

QAMRadio.py
  * Virtual initializer now accepts arbitrary number of arguments.

Dummy.py
  * __init__() now accepts an arbitrary number of arguments, so that Dummy()
    can be used in place of any QAMRadio.
  * sample() now returns a ([realparts],[imagparts]) tuple, just like sample()
    for the FieldFox.

__main__.py
  * Cleaner calls to functions with many arguments.  This allowed some local
    variables to be eliminated, because multiple fully-qualified names don't
    have to fit on one line.
  * Whether to use the dummy radio or the real Fieldfox can now by configured
    in config.py

config.py
  * Changed fieldfoxhost to the static IP that the Fieldfox is now using.
  * Renamed bw config item to ifbw (intermediate frequency bandwidth).
  * Added config items for number of sample points (per antenna), what data to
    gather from the network analyzer (it seems "raw" is not fully working yet),
    and whether to use the dummy radio.

acquisitionServer.py
  * Removed call to samplesink.close() in acquisitionServer.close().  It was
    causing a spurious JSON sample object to be sent to the MUSIC server.
    This is not a very clean fix.