Text dehierarchicalization
added Text.words & Text.paragraphs

- as with .find and .select, the return value is a list of TextMatch
objects
- ditched .glyphs in favor of subscripting the Text object itself
- matches now compute their .layout property lazily
added TextFrame.lines

- returns a list of LineFragments (just like Text.lines does)
line_fragments no longer needs an x/y offset

- it can just read it from the Text instance
- added a reference to the containing TextFrame for each LineFragment
added TextMatch.frames
fixed the bounds calculation for center-transforms
ignore
minor reorderings
fixed some huge performance regressions

- the family_name parser was spending way too much time trying to do
fuzzy matching (which made the fammy() predicate glacial)
- non-matching names will now raise an exception with suggestions
rather than resolving to an actual family (WiB)
- added caching for name->Family lookups
cache even more of the font-lookup results