Branch to test bulk decryption of events
A bunch of terrible hacks to test how much speed we would gain at
startup by decrypting events in a batch. That is:
* Trying to decrypt events once before putting them in the timeline
to avoid an Event.decrypted for every encrypted event we load from
disk at startup.
* When we load batches of events from the store at startup, fetch the
keys from indexeddb in batches too rather than a separate txn for
every event (and don't fetch the same session multiple times for
messages in the same session and the same batch).
Further optimisations that could be applied:
* Re-use inbound group sessions for multiple messages within the same
session rather than unpickling a separate one for each message.
* Not decrypting events until we actually need them
* Long standing store issues, ie. not storing message data as one
giant monolithic blob that we have to load at startup.