Macro With-Slot-Bindings

Part of:

package metabang.utilities
( with-slot-bindings < slots > < instance > &body < body > )
makes this: (with-slot-bindings (((x x2) double-float) ((y y2) double-float)) location-2 body)
into this:
(let ((x2 (ensure-type (slot-value location-2 'x) 'double-float))
(y2 (ensure-type (slot-value location-2 'y) 'double-float)))

If the first item of the binding-spec {(x x2) above} is a symbol instead of a cons,
that symbol is the name of the slot and is bound in the let.