expanded aat ligature-type selection
made Family lazier
consolidated font caching

- turned the most expensive operations into memoized methods of a
singleton
- the cache is invalidated by font activation in the app, but not when
used as a module (since the notification is runloop-based)
tidied fontspec()