Distingush macro context

I want to use sweet:macro/3 as a single predicate for defining all
macros.  We currently have only term_expansion macros but I'll soon want
goal_expansion macros too.  This paves the way.
Support cut/0 inside if/2

The old implementation of if/2 and if/3 behaved incorrectly when one of
the subgoals was a cut.  The cut only trimmed choicepoints created
inside the subgoals, not those choicepoints created prior to calling
if/{2,3}.  That behavior was subtly different than ->; and
unintentional.

The only way I can see to get the proper cut behavior (without resorting
to ancestral cuts), is to make if/{2,3} a macro.