#2 Optimized our MagikFind™ empty subsoup vs string algorithm
#2 Simplified time module. Single LTimer class provides abstraction over game time retrieval methods and interval measuring.
#2 Fixed includes
#2 Updated LData: numerical arrays now can be (de)serialized as comma-separated string or indexed soup.
* Tag names now allow dots.
* GetNamedTag, GetNamedSoup, GetNamedTagAndSoup renamed to fit getter naming convention.
* Added ToString/ToArray for int, float, bool arrays.
#2 lse.data.serialization now supports numeric array (de)serialization to comma-separated string or indexed soup
#2 Added lse.util.flags module -- convenience bitwise operations.
#2 Added LSerializible interface.
#2 Removed unnecessary abstraction layer in serialization module. Added Serializible interface.
#2 Deserialization no longer allocates empty soup in case of no saved properties.
#2 LMath: move splines to separate classes, implement serialization.
#2 LMath: Add function to test monotonic property of numeric array. Add check if x values of spline are strictly increasing.
#2 LFlags: Add Cond function to avoid explicit bool to int conversions.
#2 Fix compilation errors
#3 Add Root object.
#3 Rename Controllers to Managers. With Manager objects lifetime extended (owned by root, not mode) they are virtually the same.
#3 Create foundation classes and interfaces.
Fix #4 LStr: initialize format argument array.
Hold #2: we can live without these functions.
Merge branch 'feature/new-lse-utils' into feature/lse-root-obj
#3 Rename CoreLocomotive to RootLocomotive to remove unnecessary different naming.