Common: modification to String's Section methods

+ Methods for constructing new string from other's section;
+ FindSection() method (made of code previously found in ClipSection and TruncateToSection);
* Truncating to non-existing section now empties the string;
* renamed few function parameters

Also
* Assigning zero-length string to new string object does not make a buffer allocated
Engine: introducing Version struct

All version comparison and output are now made with the use of Version objects, instead of C-string literals.

Savedgames now contain not the current engine's version, but lowest forward-compatible version, so that earlier engines could load saves made by advanced versions, if that is applicable.
Version is still written and read as a string. Any change here will require revision of game file and savedgame file formats.