Iterative and Adaptive Processing for Multiuser Communication Systems