Improved VARIANT handling, including support 386 and amd64 support

* VARIANT now works properly on 32-bit and 64-bit platforms
* Newvariant constructor added to simply VARIANT creation
and because of special handling for 32-bit platforms
due to struct layout
* Support for float32, float64, and Currency variant types
* New Currency type (float64) to support VT_CY (CURRENCY)
variants
Tests for VARIANT conversions.