[pmc] Clean up interface, doc, and internals

o weights a separate argument
o 'origin' -> 'latent'
o more efficient einsums