Non-linear projection to latent structures revisited: the quadratic PLS algorithm