Revert "Script: properly resolve static array for DirectPtr()"

This reverts commit f08a982c4a5c6c822c2177c7dfaf11be7ac4a40e.
Script: revert StaticArrays to export direct pointer to C-array

There are cases when the script interpreter must compare pointer to object and pointer to array element, which makes it unnecessarily complicated to have an Array<T> wrapper address registered for array script symbol.
Besides, obviously, current code will still work only as far as array is linear (because of pointer math when accessing array elements in script) and never reallocated (because explicitly registered symbols will end pointing to wrong memory addresses).

What could be a possible solution to this: change the meaning of pointer (by which the item is registered) from memory address to conventional uid, which value = address of array + linear offset to element, which it would have if the array was linear. In this case we could remake linear object arrays into any other sort, like array of pointers, binary tree or hash map, while keeping compatibility with old scripts.
Engine: update script object address after room arrays reallocation
Numerous fixes related to recent refactoring

* Custom properties version constant value;
* Set IsPersistent RoomInfo flag when loading older games;
* Reset BeenHere flag for temporary room state;
* Set GuiButton placeholder mode on deserialization;
* GuiButton::OnMouseLeave()
* GuiListBox'es SavedGameIndex array usage;
* GuiMain deserialization from new saved game;
* SpriteFlags and Dialog's Options arrays initialization in the Editor;
* DialogInfo (de)serialization;
* Dialog options rendering setup;
* Typo in CCGUIObject's typename;
* ScreenOverlay copy operator, deserialization and removal;
* Debug breakpoints array usage;
Engine: do not keep unchanged properties in Room State
Engine: unified savedgame header check