Simplify tag handling for castings/nil insertion/value popping
Currently the compiler uses the op type, o-tag, tag and the context to figure out where to put casts, where to insert nils or where to pop a value off the stack.
This doesn't work well as it's really hard to figure out when it's actually necessary to e.g. pop a value or if it has already been removed from the stack.
Ideally the analyzer should provide more information to the emitter so that it's easier to understand when and where a casting/nil insertion/value popping is necessary