Preprocessor hash routines no longer compute name length
Previously install & lookup hash functions could receive a negative name
length, interpreted as a need to compute the length. While this is a
shorthand, it means each of routines had ad-hoc (and partially correct)
code for identifier length computing, instead of using a generic (and
hopefully correct) routine. Also, in most cases that used this feature,
the identifier was a constant string, meaning the desired length could
be computed at compile time.
Dropped feature and computed when needed. This also removes the problem
of conversion between size and regular integer. Additionally updated
signature of lookup routines to make explicit the fact that they don't
modify the strings looked-up.