Move audio queue details into a hier block.
Define Device objects and use them in place of Source.

The device abstraction allows the aggregation of multiple hardware-drivers;
e.g. hamlib and an audio device, or rtl-sdr and an upconverter. It also
contains some groundwork for supporting transmitting.

Notes:
* "Accessories" are gone; devices can be used instead.
* The OsmoSDR driver no longer implements external_freq_shift; this is
  done as a separate device (devices.FrequencyShift) instead, with the
  opposite sign. Unfortunately, this loses the ability to change the
  shift at runtime; re-adding it will require merge_vfos to handle the
  merging multiple non-single-point cells.
* This refactoring is not complete. In particular, top.Top still
  operates in terms of "sources" and "accessories".
Fix assorted lint.
Use SignalType to describe inputs to MonitorSink.