Raise an exception if we see two messages with same singular/different plurals.

Summary:
This is a problem:

   msgid "1 test"
   msgid_plural "{{num}} tests"
   msgstr[0] ""
   msgstr[1] ""

   msgid "1 test"
   msgid_plural "%(num)s tests"
   msgstr[0] ""
   msgstr[1] ""

because babel actually combines the two, arbitrarily throwing away one
of the plural forms.  At least it did.  Now it complains instead, so
we can fix it.  (The fix is to replace the first "1 test" by "{{num}}
test", or the second by "%(num)s test", which is awkward but at least
unique).

Test Plan:
Created /tmp/i18n/conflicting_msgid.handlebars:
   {{#ngettext}}1 test{{else}}{{num}} tests{{/ngettext}}
and /tmp/i18n/conflicting_msgid.py:
   ngettext("1 test", "%(num)s tests", 1)
and ran
   tools/pybabel extract -F tools/babel.ini /tmp/i18n
and saw it say:
   babel.messages.catalog.TranslationError: Found conflicting plurals for '1 test': '%(num)s tests' at /tmp/i18n/conflicting_msgid.py:1 and '{{num}} tests' at /tmp/i18n/conflicting_msgid.handlebars:1. (Perhaps solve by replacing '1' with <var> in '1 test')

Reviewers: james

Reviewed By: james

Maniphest Tasks: T1562

Differential Revision: http://phabricator.khanacademy.org/D4135