support [in] SAFEARRAY* and [out,retval] SAFEARRAY*
fix memory leak
adding VARIANT marshalling with multidimensional SAFEARRAY inside
Merge pull request #34 from kllbzz/issue33

fix memory leak from issue #33
Merge pull request #35

... except the binaries which I have no way of verifying
commit dll and pdb files
fix errors last commit imported
pass simple tests:
HRESULT _stdcall Write( [in] SAFEARRAY(unsigned char)* buffer,
                        [in] long count,
                        [out, retval] long* pRetCount);
HRESULT _stdcall FindRsrc(
                        [in] BSTR expr,
                        [out, retval] SAFEARRAY(BSTR)* pFindList);
unmarshaller.h: add NULL check for SafeArrayUnmarshaller
MethodBinder.java: add NULL check for some special cases that cannot get IType from IParam
fix #28
https://github.com/kohsuke/com4j/issues/28
If param as return value is not the last param, it may cause a segment fault.
By jumping return index in  invoke.cpp Environment::invoke
Merge pull request #27

... except binary changes, which I have no way of verifying
fix crash on null values as array values
preserve multi index arrays structure when marshalling from SAFEARRAY(dim N) to object[]..N..[]
transpose array index when converting to native and back, this way is natural for COM