[WIP] Refactor MSM

The "general" version is just a dot product or `np.take` though, depending on the storage formats.