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 don't disagree, but this behavior is not new, it is part of the original design. When I build the output system I designed it around ExodusII output, which is the most powerful thus has a lot of control over what may be output.

As the system has evolved and is being used for simple output tasks such as these debugging outputs, this problem has arrived. The suppressions of output_scalar_variables, output_postprocessors, output_vector_postprocessors are important and actually disable calling of output methods in the Output object (i.e., suppressing output_postprocessors disables the call to Output::outputPostprocessors()).

Perhaps having the individual outputBLAH() methods for each type of variable was a poor decision only a few output types actually utilize the methods, although some of that will change if we ever implement #2518.

The system I really wanted to build would be more modular. For example, the Exodus output object would inherit from base classes to add output methods (e.g., inherit from PostprocessorOutputBase would add the outputPostprocessor method). However, having a single output() method in the Output base class can't call these because it doesn't know about them. Perhaps the whole system is overdesigned because I started by designing for Exodus. I have thought about simplifying the underlying structure, but that is a topic for another issue. Some of this re-design may come with #3847.