Variant ndarray

This extends numpy array handling to include arrays of non-basic types. For example, arrays of datetime or Decimal objects can be pushed into a VARIANT. This is facilitated by the introduction of a dtype for VARIANTs, which allows for packing of VARIANTs inside of a numpy array. To demonstrate the utility of this approach to creating safearrays, support for numpy.datetime64 was added. The conversion of a datetime64 array to a safearray of VT_DATE VARIANTs is performed without excessive python calls or looping.