Cleanup of variational mesh smoother

* Removing custom typedefs
* Move constructors to C file
* 'uint' is not standard C++
* built-in types need not be passed as const
* 'if(' -> 'if (', 'for(' -> 'for (', 'while(' -> 'while ('
* Clean up function prototypes
* Fixing indentation
* Use C++ style casts
Replacing C arrays with C++ objects

double* x -> std::vector<double> x
double** x -> Array2D<double> x
double*** x -> Array3D<double> x

Got rid of all dynamic memory allocation.
Declare variables when they are used.
Use const in interfaces where appropriate.
Cleaning up C interfaces.

No need to pass mesh dimension, number of nodes, number of cells, and
number of hanging edges as separate parameters.

Removed unused FILE* parameter from several functions.

Pass references instead of pointers where possible.
Converting FILE* usage to std::ofstream where possible.

Declare variables where they are used.

Replace sqrt, abs, and fabs with their std:: versions.
Fixing lots of remaining spacing and formatting issues.
Miscellaneous improvements:

* Simplifying logic in minJ_BC
* Refactor readmetr to use ifstream
* Use default op=
* Fixing some numerical constants.
* Making some parameters non-const and adding accessors.
* Add error checking for fopen.
* Passing std::strings instead of char*
* Fixing up the metr_data_gen() function.
* Properly initialize _dist_norm.
Converting metr_data_gen to iostreams.
Miscellaneous improvements:

* Cleaning up some numerical constants.
* Removed code duplication for QUAD/HEX metric output.
* Fixed bug in HEX metric output.
* Use Point instead of array where possible.
* Update docs.
Merge pull request #291 from libMesh/vsmoother

Clean-up of the old vsmoother class