Implement Grid virtual behavior

Due to complexity of the internal Grid structure and logic it's hard to
implement null virtual grid items.

Extract internal GridItem data in a separate class GridItemData. Create
this class lazily to reduce the memory footprint of "virtual" item.
Rework GridItemLCA in order to handle cached/uncached items (support
item data clear).
Optimize GridItem disposal to improve the performance when diposing huge
amount of items (reduce item count).
Some other small code re-factorings and optimizations.
11 files changed