Moved python files to python subdirectory
Ruby class for communicating with adc16_test model

Some of the functionality is generic to any ADC16 model.  Some is
specific to the adc16_test model (and should be moved to a subclass).

All of the cirrent implementation is based on the initial ADC16 yellow
block from gateware Jama and Genn.  It will need to be updated as the
ADC16 yellow block gateware evolves.
Move adc16_test-specific code to subclass
Do not set msb-first mode in adc_init
Change data_format arguments

Now takes hard-to-remember-purpose-but-easy-to-remember-values
true/false for both arguments rather than
hard-to-remember-values-but-easy-to-remember-purpose symbols.

Also made invert_msb the first parameter.
Avoid race condition when writing delay taps

When writing the delay tap values, the rising edge of the "reset" bit
triggers the current value to be read in.  Because the bits come from
the EPB clock domain, it's possible for the reset bit to be captured
into the fabric clock domain before all the delay value bits are
captured into the fabric clock domain.  The built-in edge detection
logic likely delays the triggereing long enough for this not to be an
issue, but writing the delay value first with all reset bits set to 0, then
writing the same delay value with the appropriate reset bits set to 1
avoids the race condition altogether.
Add an expected value parameter to walk_taps.
Be more consistent with "chip" vs "channel" terms

Each ADC16 board has 4 ADC "chips".
Each ADC chip has 4 "channels".
Each channel has 2 lanes ("a" and "b").
Each lane is a serial stream of 8-bit data values sent over a
differential pair (i.e. 2 wires).
Add chan and lane options to walk_taps
Remove lane parameter from walk_taps

Since we can't distinguish which lane corresponds to even/odd samples,
there's no point in letting the caller think we can.  walk_taps now
returns a two element array.  The first element is an array of delay tap
values where there were no errors (i.e. unexpected values) in the 64 K
samples.  The second elements is a 32 element array of error counts.
Each element of the error count array is a two element array containing
the error counts for the even and odd samples for the given channel.

The return value is:

[
  good_taps,
  [
    [dt0_even_errcnt, dt0_odd_errcnt],
    [dt1_even_errcnt, dt1_odd_errcnt],
    ...,
    [dt31_even_errcnt, dt31_odd_errcnt]
  ]
]
Allow chip to be specified as string

In addition to the 0-3 numeric and :a-:d symbol representations for
specifying chip, string representations 'a'-'d' and 'A'-'D' are now
supported as well.
Add methods to plot delay tap error counts
Clarify a comment
Close plot at end of plot_all

This ensures that the last subplot gets written to the output, which is
especially important when outputting to a file from an interactive
session.
walk_taps now returns results for all channels

Since getting the walk_taps results for a single channel was almost the
same about of work as getting the results for all channels, it is much
faster to return all channels on a single call to walk_taps than
returning just a single channel per call.  The extra overhead is
negligible so callers interested in only a single channel will not
experience adverse performance effects and can simply ignore the
unwanted return values.

plot_all now runs about four times faster!
Enhance options to plot_all

Now plot_all takes options in a Hash.  Currently supported keys are:

  :expected = Expected value from test pattern
  :device   = PGPlot device on which to plot
  :nx       = Number of subplots in X direction
  :ny       = Number of subplots in Y direction
Bit reverse chans in delay_tap

The current development gateware has the channel bit ordering reversed
from how I want the API to be.  For now we bit reverse chans to adapt to
the current gateware, but once the gateware is changed, we can revert
this software change.
Allow snap to accept ADCs in other forms

Instead of only supporting Symbols (e.g. :a), snap now allows the ADC(s)
to be specified as numbers (0-3) or Strings ('a' to 'd' or 'A' to 'D').
walk_taps now sets delay taps to optimal values

Instead of leaving the delay taps set at 31, it now does something
more useful!
Require pgplot/plotter

Eventually, this file should be split into multiple files.  Basic ADC16
functionality does NOT require plotting!