typechecker: case insensitive naming lookup

Summary: HHVM continues to be an environment that treats classnames as
 case insensitive (like PHP) and will remain so for some time. In
 order to smooth the transition to <?hh code, the typechecker should
 *not* allow ##class CamelCase## and ##class CaMeLcAsE## to both be
 defined names, nor should it treat typehints that refer to such
 mis-capitalizations in partial mode as referring to an unknown PHP
 class.

 This is accomplished by having an additional map of
 ##lowercase(classname) => classname## as part of naming, and spitting
 out an error when a lowercase(classname) is present in this map but
 standard naming lookup fails. The recovery from this error is
 **rewriting** the offending hint to the canonical name and proceeding
 with lookup as normal.

Reviewed By: @jwatzman

Differential Revision: D1447845