support [in] SAFEARRAY* and [out,retval] SAFEARRAY*

It's different from SAFEARRAY-return-values branch. It not use a safearray wrap in java side, but generate a safearray from java array in c code every call.

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);