Respect masked characters in __in_quotes()

This commit adds logic to __in_quotes(), so that "\"" isn't taken as three
quotes, but still "\\"" is and "\\\""" is, too, and so forth...
Fix macro argument recognition

Don't restrict macro arguments to identifier-like objects anymore, i.e.
allow macros to be called within macro invocations, and totally obscure
things like

  $ ./upp <<EOF
  #define f(x, y)		\
  do {				\
  	void *__x = (x);	\
  	y(__x);			\
  } while (0)
  f(({(char **) {"\",[", "abc"}}), action);
  EOF

which now yields the desired result gracefully:

do { void *__x = (({(char **) {"\",[", "abc"}})); action (__x); } while (0);
Fix destruction of function-like macros without a map

Function-like macros which have none of their arguments occuring in their
definition would get an invalid ->map address from get_define(). (This
trivially includes function-like macros without any arguments.)

This special invalid address wasn't checked for previously, resulting in
segfaults with code like

  $ ./upp <<EOF
  #define f(x) "x"
  f(12)
  EOF

or

  $ ./upp <<EOF
  #define f(x, y)	no occurence of any argument
  f(12, 13)
  EOF

Now, this is taken into account and the invalid address isn't tried to be
freed.