Used an unrestricted union for FieldValue.

I used an union to store the possible values of FieldValue instead of having unused storage space.
From what I can see, it is an immutable class, so I didn't bother reimplementing operator= since it does not make sense for an immutable class. I also added a move constructor, just in case. Now, the class can be extended with new types/new members if desired without needlessly using more memory. It might currently seem to be a little verbose, but it's the price for having lighter and extendable class.