my/my_queue: use unique symbol names for the memory barrier and mutex implementations

also add a 'struct my_queue_ops' with function pointers for the
different implementations.

this makes it possible to use both the memory barrier and mutex
implementations in a single program, though care must be taken to not
use the 'struct queue *' returned by one implementation with the other
implementation.