Get the line breaking algorithm working
Let the std::list derived run class store clusters rather than  pointer to clusters.

Made for ugly code when it comes to dereferencing clusters through iterators. This is also poor use of memory as each pointer stored in the list is a small allocation on top of the cluster objects they point to.
Remove the optionality of fill_by_span()'s span argument.

Since finding I can just as easily get the info at the call site there is no need for tile::fill_by_span() to dig this up on it's own and this makes that function a little simpler.