Can't encrypt sauce access key on CI

Means PRs can't be tested.
Alloow Candy.Util.localizedTime to take a Date obj

There were many cases where the code was creating a date object, rendering it to a string, then parsing the string back into a Date object. This change uses the native Date object as long as possible.
Add timestamp data to messages

This will allow JS code to look at messages already rendered in the DOM and be able to tell the original time the message was received. Among other things, this can be used to determine where to start loading more history, based on which messages are already in the scroll back.