internal/v4: implement extra-info GET and PUT

We also change a bunch of ErrNotFound returns to use WithCausef
to aid error diagnosis.

We store the extra-info values as raw JSON, so that we're guaranteed
a correct round trip through mongo.

There are a bunch of changes to internal/v4/relations_test.go that
I didn't make and don't expect to see. Weird.