First two steps of EM algorithm

I've adopted Rob's functions in ccpUpdates. The pi_s ends up being almost exactly one right now, so this may be wrong, but the way I understand it, equation (2.8) is the likelihood of replacing the engine at a specific time given the CCPs, which is calculated with Rob's function CCP.to.likelihood. Then, I update q.s, though this may be where it goes wrong. I'll work on it some more later, but maybe you have some thoughts about it?