Index the previous decoration cache by lineNumberId rather than screenRow

Why? Screen rows change. If some operation (folding?) changes the 
screen rows and the decorations at the same time, the previous 
decorations will no longer be valid and can no longer be diffed against 
the decorations to-be-rendered.
Remove cached decorations for removed lines
Set the `decorations` and `previousDecorations` vars before loops

Both loops use both vars, so both need to be available before the 
diffing!