Auto-group data buses in vcd output module

When probe names are encountered of the form:

probe<5>

They are grouped into a vcd bus. In the output, missing bits are indicated by 'x'

Additionally, change the vcd output to properly use the $dumpvars/$end construct,
output the initial value of *all* probes within this block.
zeroplus: Always set DONT_CARE_TRIGGERBAR to 1

Experimentation with the windows driver has found no situation where
this is set to anything other than 1. The zerominus software also never
sets this to anything other than one. Revert the code change made in
0ab0cb942f.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>
zeroplus: If there is no trigger, don't try to capture anything before it

There won't be any because we trigger immediately.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>
zeroplus: Make analyzer_read_start match captures from the windows driver

Also document a little better what is going on, we are reading 2 capture samples
out of the capture buffer and discarding them. The first one looks like it might be
valid, the second looks like garbage.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>
zeroplus: Support 32 channels

This will need some additional work when support is added for compression modes
since group D is disabled for RLE compression and C and D are disabled for "double"
compression.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>
zeroplus: Add getters for memory configuration

This is needed at capture readback time to determine how many samples to read
in.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>
zeroplus: Add missing config_get for SR_CONF_CAPTURE_RATIO

Without this, latest pulseview gets an assert and dies.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>
zeroplus: Major rework of sample buffer processing

The sample buffer is a still a bit of a mystery, but this should help. The variables in play:

triggerbar/ramsize_trigger - These two variables added together indicate how
many samples we want captured. ramsize_trigger - triggerbar indicades how many
samples must be captured. The ratio between the two is determined by capture ratio.

memory_size - This indicates the number of samples in the circular capture buffer.
stop_address, now_address, and trigger_address are pointers within the zeroplus that
wrap based on this size.

now_address - The address that the zeroplus was about to write to when it finished
capturing, and now the address that will be read from when reads are done from
the capture buffer

stop_address - The address that the zeroplus last wrote to when it completed capture.

trigger_address - The sample address for which the trigger occured.

status - This one is a bit tricky. Some testing has shown that if the zeroplus has
captured memory_size or less samples, the STATUS_READY bit is set. For all captures
generated with more samples than this, STATUS_READY was cleared. However,
boundary conditions are difficult to test and values such as, memory_size + 1 have not
been tested. We use this to determine if the capture has wrapped through the sample
buffer.

More testing is required, but this improves behavior in a number of cases, specifically
capturing sample amounts that are not a power of 2 of the sample buffer size. Before,
random data was passed to libsigrok.

Signed-off-by: Russ Dill <Russ.Dill@gmail.com>