Particle Learning and Smoothing