Review feedback:

* includes asuth's fix in gelam for atTop not being true on first sync
* so ignoreAtTopForCache is now removed
* message_list now has an onMessagesChange bound to the slice's onchange event
* onMessagesChange handles the work of calling updateMessageDom and the cache save
* now updateMessageDom does not need to know about index and avoids the ambiguous passing of index in onMessagesSplice