Previously the full map from review to marks was constructed,
thus resulting in storing all marks records at peak. Now we use
the fact that marks are ordered by time in runtime storage and
if we observe marks for patch N it means that all from N-1 were
seen before. Thus the maximum memory allocation is reviews count
multiplied by number of marks in last patches (approximately
by average number of patches less then before)
Part of blueprint memory-optimizations
Change-Id: Ia33001f57b0d92f6ff562f8c51aecba5875e8825