GUIEpgGridContainer: add dirty region processing and fixes for missbehaving memory freeing

This adds dirty region processing (currently it will be constantly marked as dirty). Splitting processing and rendering results in very similiar methods (ProcessSomething() and RenderSomething() ). I don't like it much because of code duplication, pretty much exactly as it is in CGUIBaseContainer, where Process() and Render() share much of the code (calculation of item positioning), but trying to merge these two would result in really hard to read code IMO.

Order of changes might be a little weird - I committed as I changed stuff without looking too much ahead and didn't have time rebase yet. Will do it if needed.