Migrate all debug output tasks to DebugOutput object

- This moves all remaining debug related output tasks to DebugOutput
- It maintains [Debug] block (@andrsd you/I might need to do something to get this to work with RELAP-7)
- This also formats the Material property output to match the look of the existing system information
- Improved debug output testing

(closes #3813)
(closes #2868)
I vote for another PR, I already created an issue for another smart pointer, I will had this too the list in #3857.

Are we switching to all smart pointers now? In this case it doesn't seem necessary since there is no ambiguity in who owns it, the ActionWarhouse is in charge of it. All the actions created with this code are added to the warehouse shortly after creation. I don't really care either way, I just want to know when we should be using or not using smart pointers.