Refactoring and implementing the missing cases.
Also added BooleanBinaryOperation for comparing <bool>==<bool>, !=, !==, ===