src/: Allow methods to have more than one entry each in a vtable.
The entries are assigned distinct `roles' to distinguish them. Each
role can have a different type. To accommodate this a number of changes
are made to the API. Note that no roles other than the standard `nil'
role are currently defined, so none of this change should have any
externally observable effect.
* The `make-method-entry' method is replaced by `make-method-entries',
which returns a list of entry objects. The standard method on
`compute-vtmsgs' collects these together into a big list.
* Slots in the `vtmsgs' structure are now given names by the method
entries directly, rather than being named after their messages.
There is a new generic function `method-entry-slot-name' to make
this work, and a little protocol `method-entry-slot-name-by-role' to
make extending this machinery easy.
* The `message-macro-name' function now takes a method-entry rather
than a message, because each entry needs its own macro.
* The `method-entry-function-name' function has grown an additional
`role' argument. The standard method inserts a non-nil role name in
an unimaginative manner.
* The standard method on `method-entry-function-type' now inspects the
entry role, but its behaviour is unchanged except to check that the
role is nil.