Dynamic array handling

Dynamic array handling is severely broken on delphi x64 because the array header layout is different from 32bit (related to issue #63).

This patch refactor the handling by defining the header structure as a record to access refcount and length. I have done basic testing on x32 and x64 (Delphi XE2) and this works for the tests I have done. The header definition I have found for FPC include a function to get the length (the old code ignore this). I'm not familiar enough with FPC and someone will need to check if this patch need some adjustment for FPC.