more complex text handling

instead of a single std::wstring we have a std::vector<TextBlock>
where each text block has its own layout object.

Added also a cursor object but it is barely used.