icode: ITypeCheck requires a receiver
For complex type checks that involve virtual types or generics,
a receiver is required.
For instance, with T a virtual type and x a variable
x isa T
is in fact
x isa self.T
This patch transforms the ITypeCheck from a ICode1 to a ICode2,
where expr1 is the receiver of the type and expr2 is the variable to test.
Clients of ITypeCheck are updated without change of behaviour.
Note that, strangely, during the icode_generation, the register that hold
self is lost, a new attribute is therefore added in A2IContext to store it.
Signed-off-by: Jean Privat <jean@pryen.org>