Retain hinting for first font

Part of https://github.com/behdad/fonttools/issues/95
Make unicode.py py23-compatible
Allow loading zero-length tables

Fixes https://github.com/behdad/fonttools/issues/106
Allow setting 'raw' attrs on XML for tables to be loaded from hex

Previously one had to set the 'ERROR' attribute.  Accept raw also.
So, for example one can say:

  <cmap raw="1">
    <!-- Hand-coded format13 table mapping all Unicode
         characters to .notdef glyph. -->
    <hexdata>
      0000 0001 <!-- version numTables -->
        0000 0006 <!-- platformID encodingID -->
        0000000C  <!-- offset -->
          000D 0000 <!-- format reserved -->
          0000001C  <!-- length -->
          00000000  <!-- language -->
          00000001  <!-- nGroups -->
            00000001  <!-- startCharCode -->
            0010FFFE  <!-- endCharCode -->
            00000001  <!-- glyphID -->
    </hexdata>
  </cmap>
[merge] Map recursive lookups

Fixes https://github.com/behdad/fonttools/issues/109
Fix up regression in promoting lookups to extensions

Was broken by 6ed2eb409231a7fe3e0c2a135f9a89796206f639

Fixes https://github.com/behdad/fonttools/issues/110
Add isUnicode() and isSymbol() to cmap subtables
[merge] Use CmapSubtable.isUnicode()
[subset] Use CmapSubtable.isUnicode()/isSymbol()

Fixes https://github.com/behdad/fonttools/issues/111
Add NameRecord.isUnicode()
[subset] Use NameRecord.isUnicode()
[subset] Correctly handle subsetting non-Unicode cmap subtables
Minor