django.contrib.messages is now optional (closes #331)