some cleanup

moved a couple of directwrite factories out to plx
change TextBlock string to be in the heap

now a std::shared_ptr<std::wstring>
basic file loading

it splits into 512 bytes nearest LF which is already triggering
interesting bugs.
display bug fix

file loading showed a bug on which we don't display at all and that is
when the textblock is bigger than the viewport.
cleanup of file IO

1- we were dropping the last block
2- unify the textblock size on TextBlock::target_size