A large binary with lots of strings can cause the "Defined Strings"
table to fight with the Listing view over database locks.
This change eases some of the issues by making the defined strings table
be nicer by yielding to the swing thread before starting its query loop
(which allows a Listing view which is also doing its full rendering at
the same time to finish before the loop starts) and making the
DefinedDataIterator a bit smarter about what elements it needs to
recurse into.
The Listing can still be quite a bit laggy when the Defined Strings
table is loading.
Also fixed a logic error in StringDataInstance that caused it to return
a empty string for arrays of character elements.