Quote numbers whenever they've been used as a string

This replaces Data::Dumper with B and checks to see if something that
looks like a number has ever been used as a string (i.e. if it has a
valid internal string value).  If so, it gets quoted.  Otherwise it does
not (unless it's a hash key).