Made PSInvoke use generics instead of object for parameters and return values to keep primitives unboxed as long as possible.
    Some work will be needed to optimize PSInvoke (like what we have with PSInvokeMember).