64bit fixes

The main change with these patches is the fix for long type, i.e. convert c++'s long to System.Int32 on 32 bit target and System.Int64 on 64 bit target.

I changed the PrimitiveType enum to match the C++ types. I think that's the correct behavior, as we need to handle the types in their original form, as, for example, when we output with the CLI generator, a c++ "long" type should be output as "long" (afaik). But with CSharp generator, we want either Int32 or Int64.