Fix missing field on x64, use packet groups

Despite rigorous testing, the x64 version seemed to be dropping a column from the result set. This would appear to be due to the differences in the way the x86 version of the API handles the ubound parameter of the enumeration.

x86 ubounds are inclusive, where as x64 are exclusive. Hence in the case of x86 we need to subtract one from the field set, but not in x64. This PR fixes this problem.

I also made use of the packet grouping functionality to tidy up a chunk of the code. Yay for easier grouping!

All queries should now return the same result set across all platforms.