move 'back-shifting' all to the same funciton 

NOTE!  A patch is needed for the internal trunk before this can be applied!

Organizes things a bit better and fixes some bugs with Picard iterations.

refs #3308