New class PETScWallClockTimer and Modifications in classes of RunTime and CPUTime

As Dimm suggested. I subtracted this PR from  #487 specially for classes  of  ``PETScWallClockTimer``, ``RunTime``, and ``CPUTime``. With the modifications in ``RunTime`` and ``CPUTime``, member ``stop()`` was removed. @TomFischer and @endJunction ,please take a look.

PR #487 will be closed temporarily due to the ``reset node ID`` issue, and it will be reopened once a FEM (say for a simple elliptic problem ) is completed in  the official repository. 
That's what I mean. Under such consideration, we have two choices.
1 .  
```
IF(OGS_USE_PETSC)
   ...
   -DUSE_MPI
ENDIF()
....
IF(OGS_USE_MPI_RELATED) ## for example
   ...
   -DUSE_MPI
ENDIF()
```
2 .  
```
IF(OGS_USE_MPI)
   -DUSE_MPI
ENDIF()


IF(OGS_USE_PETSC)
   ...
   SET(OGS_USE_MPI ON)
ENDIF()
....
IF(OGS_USE_MPI_RELATED) ## for example
   ...
   SET(OGS_USE_MPI ON)
ENDIF()
```
Now the second choice is adopted taking account  of compilation on Windows.