Lots of work on Types and bug fixes

Fixed nasty marshalling error where the NetCDF NC_MAX_NAME was 128 but
NetCDF4 uses 256 so the we were getting a SEGFAULT, another problem is
that when the return type is string the marshaller attempts to free the
pointer when GC picks it up but it's a static char* so it really should
be COPIED not freed.