Re-factoring SolutionUserObject to fix read errors

I am working on this patch to fix the read problems mentioned in #3517, the changes are mostly implemented but I am still working out the final bugs.

However, SolutionAux execute_on is not behaving like I would expect: setting 'execute_on = initial' causes initialSetup not to be called...

I may wait until @permcody implements vector execute_on stuff before I dig deeper.