This patch includes a test that fails without the fix.
I discovered that we weren't creating Values for integer literals when, in a
different patch, I tried to overwrite the value of a struct field with a literal
for the purposes of a test and was surprised to find that the struct compared
the same before and after the assignment.
This functionality therefore seems useful at least for tests, but is probably
also useful for actual analysis of code.
Should we be taking the type into account? If not, why not? Please add the type or document why the type isn't tracked.