Fix client/server-side analytics race condition

We are seeing bad analytics data in Mixpanel because
we are not aliasing guests into users.

https://mixpanel.com/docs/integration-libraries/using-mixpanel-alias

Segment.io strongly recommends doing this client-side:

https://segment.io/docs/integrations/mixpanel/#alias

Restrict user-facing flash messages to a known whitelist
so we don't accidentally send `flash[:signed_up]` to the view.

https://trello.com/c/ZzJdRvJu
@sgrif showed me some cool stuff using Segment.io in Angular on another project. I think I'd like to come back and do a larger refactoring of all this as a way to improve my Angular skills. At that time, I can add the missing test coverage using Jasmine. In the meantime, we have a data aliasing issue in Mixpanel production. Okay if I squash and merge without the coverage to get that addressed today / tomorrow?