handle dead items/blocks
split PLTS::top into two functions
remove dead code
use relaxed memory order for accesses to items in VirtualArray
improve implementation of PLTSBlock::top

by remembering the best item found by the last call of PLTSBlock::find_best
fix: don't initialized end iterator twice
remove superfluous include
clean up VirtualArray

m_start is a leftover of a previous failed attempt to free some of the memory the VirtualArray uses
VirtualArray::m_end_idx is now atomic

Other threads access it concurrently and should not read a junk value