Minor
Typo
Fix cmap subtable format 4 compiling

Was failing all these years, if a idDelta value happened to be
exactly -0x8000...

Test case: roundtripping MTLmr3m.ttf.
Simplify cmap subtable format 4 idDelta code
Improve docs, whitespace/imports fixes, some stylistic changes to API.
Merge branch 'master' of https://github.com/behdad/fonttools
Merge branch 'master' of github.com:wenzhuman/fonttools
Fix rangeShift calculations for count=0 in sfnt, cmap, and kern
Refactor getSearchRange()
Fix post table glyph name dedup logic for edge case

This is a followup fix to 85be2e0a9773acec3c6d14c345b1fd94ab3aa5c3
Before this change, if some glyph names had a "#-number" suffix in
the post table, we could generate duplicate glyph names.  Fix that,
even though "#" is NOT a valid character in PS glyph names.
Change cmap-based duplicate-name resolution from n^2 to linear time

Similar to 85be2e0a9773acec3c6d14c345b1fd94ab3aa5c3, though much
harder to hit.
Apply fixes from 'hhea' to 'vhea'

Maybe they should be merged...
Merge branch 'master' of https://github.com/behdad/fonttools
Merge branch 'master' of https://github.com/wenzhuman/fonttools
Allow ligatures with one component only
Minor
[subset] More fixing of (Chain)ContextFormat2

This is follow up to 98b60757ab9bb0aaa3c1f136e5a837a1b73d22ed
Looks like this lookup type is a curse to stay with us.  Sigh...
[subset] Actually prune empty subrulesets in (Chain)ContextFormat2
add graphics states
[subset] Fix pruning of empty rulesets in (Chain)ContextFormat1

Similar to 98b60757ab9bb0aaa3c1f136e5a837a1b73d22ed and the
recent commits for Format2.