internal/router: implement PUT for meta endpoints

This also adds the notion of a multi-error, adding a new field to the Error
type.
I don't like to use anonymous fields where I'm not gaining particular benefit from
them, and "p" seems a reasonable name for the parameters to me - surely
some name is better than none, even if it's short?!

The reason for the short name is that it's used all over, and as there's only one
field, the field name adds weight but not much value. Hopefully the code
is clear as soon as you've looked at this type definition...