Autofill attachment fallback if the user doesn't fill it
Autofill attachment fallback if the user doesn't fill it

Summary:
This should save us a lot of effort and make it more likely that any given
message will work in a fallback client.  By default, Slack will just use the
text attribute for the fallback, but we send some messages that have
important information in pretext and fields, so we add those ourselves.  Slack
will automatically reformat slack-style links to look nicer in plaintext, too
-- this happens even when we specify a fallback text.

I would propose that after landing this, we remove our manually specified
fallback text from most alertlib callers that set it.  I think the text that
this generates will look just fine, and it should remove some code complexity
in the callers, and make it more likely that the fallback text stays up to
date.

Test Plan: Sent some test alerts from a shell, viewed them in a fallback client.

Reviewers: csilvers, benjaminpollack, mroth

Reviewed By: benjaminpollack, mroth

Differential Revision: https://phabricator.khanacademy.org/D21852

Khan/alertlib