Refactoring of font classes

- get rid of FontMetrics and merge its interface into Font
- NotImplementedAttribute descriptor to make clear which attributes Font
  subclasses should provide
- LeafGetter descriptor to forward attribute gets to dict lookups
- Font.cid_font was dropped, as Font.encoding can serve the same purpose
- Type1Font is now a subclass of AdobeFontMetrics (no more metrics attr)
- split off the AFM and PFB parsers to a separate classes
- OpenTypeFont now inherits from OpenTypeParser (no more _tables attr)
- split off parts of OpenTypeFont __init__() to two private methods

Note: Font's __hash__() isn't super safe
Add a PFA parser (but prefer PFB files, as less can go wrong parsing them)