First working solution to issue #42

This commit adds either one or two casts to the first argument to
upcr_{barrier,notify,wait}().  Examples:
  issue64.trans.c:        upcr_barrier((int)9, 0);
  issue64.trans.c:        upcr_barrier((int)10.1234, 0);
  issue64a.trans.c:       upcr_barrier((int)(long)&x, 0);

For the case of a pointer type the expression is first cast to the
target-specific intptr_t (returned by ASTContext::getIntptrType(), and
thus not dependent on stdint.h), to avoid warnings such as gcc's
"cast from pointer to integer of different size".

Currently a "(int)" cast is prepended to *all* expressions (making for
two casts in the case of a pointer type).  However, my intention is to
supress this cast for the common case that the expression already has
type "int".  If implemented, that will simplify the first example to:
  issue64.trans.c:        upcr_barrier(9, 0);