this allows value get_type callbacks to use mie_ctx to obtain mie_type pointers,
rather than having to define their own static versions of the type structs.
every construct within Mie, such as constants, instructions, functions, and translation units, are sub-types of the generic mie_value struct.
mie_value will facilitate iterating through the IR, as well as converting the IR to/from different formats.