Clean up const type inference

Summary: Remove duplicated code dealing with infering the type of constants. For
some reason it was doing munging during naming, which we don't need at
all; move the one relevant bit into the other code in declaration. Add a
comment as to why we need special logic here.

Originally to support negative constants:
These are parsed as a unary minus. Fixing here seemed easier
than fixing the parser (which isn't necessarily wrong depending on how
you look at it).

Reviewed By: @int3, @elgenie

Differential Revision: D1559026