Fix some VDLRead bugs and minor clean-up.

While I was implementing the reflect version of VDLRead, I
noticed some bugs in both the vdl.Value and codegen versions of
VDLRead, so I fixed them.

The codegen set/map version was wrong because it was
early-existing when the lenhint is 0, rather than calling
NextEntry until it returned done.  The lenhint handling in
general was wrong for multiple types; we need to ensure we end up
with nil collections if there are no entries.

I also made the codegen version of array faster, by filling the
elem in directly, rather than using a temp variable.  I changed
the vdl.Value version list to add support for our eventual world
where the LenHint really isn't set, and employed a simple growth
strategy.

I also noticed that the type compatibility checks we added make
our benchmarks 20% worse.  We can deal with that later.

MultiPart: 2/4
Change-Id: Id161477cc6812edc5a2b6895bc0ec95fd4280781
1 file changed