Monkey patch 'django.utils.translation'

Modify Django's translation library, such that the gettext family of
functions return an empty string when attempting to translate a
falsey value. This overrides the default behavior [0]:
> It is convention with GNU gettext to include meta-data as the
> translation for the empty string.

This patch provides a holistic solution to replace the current piecemeal
approach [1][2].

Affected Methods:
    - gettext
    - gettext_lazy
    - pgettext
    - pgettext_lazy
    - ugettext
    - ugettext_lazy

[0] https://docs.python.org/2.7/library/gettext.html#the-gnutranslations-class
[1] bad803e451ce63b4693ecf52b66cedfce5b43160
[2] https://github.com/edx/edx-platform/pull/4653
I wonder if import order and the fact that you're doing the patch declaratively in the run() will lead to surprising behavior downstream. Specifically, I guess I worry that edxmako may have some reference to gettext from earlier in time, and that the patch application may do copy-on-write. 

It would be cool if we could have a unit test get a pristine ugettext, apply the monkey patch to it, and confirm that it's id() before and after the application is unchanged. Because if we could do that, then we can be certain that every reference to ugettext everywhere gets the patched version.  I'm not certain how you would tell whether you were in the testing context so that you could choose not to patch, though.
I guess confirming that it behaves properly would be as easy as firing up a shell session and comparing the id() values for ugettext as bound into the scopes of, say, edxmako and analytics.