Add a type tag to vm_value.

Currently, the type tag is a 64-bit unsigned int. This is partly 'cause
I want to eventually have it act as a user-expandable type tag, so it
may need its type changed to something more general than an enum.

Besides that, all conversion functions that don't return a
natively-stored type in the VM are gone. Instead, you can cast to an
arithmetic type.
Fix up vm_test.cpp