Change flask-babel semantics to be more inline with webapp2_extras.i18n

This completes the changeset in 500cb80a3, which changed semantics to
only interpolate in gettext and ngettext when **variables != {} in order
to more closely match webapp2_extras.i18n. It fixes an oversight in that
commit where ngettext does variables.setdefalt("num", num), and so
**variables is never empty during the "if variables:" check and is
always interpolated.

Rather than add "num" to **variables only when **variables != {}, I
dropped it entirely. The rationale is that otherwise ngettext calls like
ngettext("%(num)s apple", "%(num)s apples", 2) would work in a flask
context, but would break in a webapp2 context where "num" isn't
magically available.

Test plan:
tools/runtests.py api.v1_test.V1PostTest.test_user__invitestudent api.v1_test.V1PostTest.test_user__manageinvite