internal/router: implement PUT for meta endpoints

This also adds the notion of a multi-error, adding a new field to the Error
type.
The reason for not doing it in advance is to avoid unnecessary garbage
(and it means that checking whether there is an error is just a simple len check
rather than a scan through the slice.).

I've updated the BulkIncludeHandler docs to make the contract a little clearer.