Support VARIANT on both 32-bit and 64-bit platforms.

This an another way to fix #38, based on @mattn's suggestion in the comments for mattn/go-ole#39. I think this way is much cleaner.

* Split variant implementation into architecture-specific files
for the struct definition, and an implementation file for methods
* Use build tags in architecture-specific files to determine which
struct definition to include
* Add NewVariant constructor to simplify and standardize construction
of VARIANT's