Factorise code to determine the type of and create casts for arithmetic binary expressions.
Pass the expression kind as parameter to parse_compare_builtin().
Do not panic on __based, but give a nice error message and parse it.
Do not treat erroneous expressions as potential null-pointer constants.

This avoids strange followup errors/warnings.
E.g. '&x != undeclared' warned that the address of x is never a null pointer.