This is a round-about way to produce a Value from a ToJSON instance.
it is written this way to avoid calling toJSON which might be undefined
for some datatypes that only implement toEncoding.
It is defined in a separate module due to the TH stage restrictions as we need
to lifttoJSONE eventually.