Reorganize and refactor Unit

Summary: This is partway towards having less monolithic and more documented Unit
code.  The rest of the cleanup is imminent, but it was starting to get
out of control in scope and I wanted to get this much in first to avoid
conflicts.

Notable changes include:

- Clean up and document all of Unit's methods.  Also do some easy
  refactoring, delete some undefined functions, and privatize some
  things that aren't used publicly.

- Kill Unit::m_cache{Offset,Mask}, which were always zero and never
  mutated.

- Refactor the code copypasta'd between LitstrTable and Unit into
  NamedEntityPairTable, and move the global NamedEntityMap into
  named-entity.h.  This untangles the dependency between LitstrTable and
  Unit and also slays villainous duplication.

- Remove the m_litstrs vector of StringData*'s from LitstrTable; it is
  redundant with the first component of m_namedInfo, the vector of NEPs.
  This is the only real functionality change included in this diff.

- Move UnitEmitter and UnitRepoProxy to unit-emitter.h---though we're
  currently relying on unit.h for all our includes.  This will be fixed.

Reviewed By: @alexmalyshev

Differential Revision: D1440780