New CMFD Routines

This pull request addresses the following issues relating to re-writing CMFD in OpenMC:
#193 
#194 
#195 

Not all features have currently been implemented, but the base style changes have all been made to the CMFD routines. Currently we still have to do:
- [x] hide row/col accessing from developer to prevent confusion with Fortran and C (PETSc) indexing from #194 
- [ ] all of #195 
- [ ] Update documentation of CMFD in User's guide
- [ ] Optional: add theory section on basics of CMFD

Other changes not highlighted in the issues that have been addressed here are:
- Optional variable display column for CMFD, by default CMFD will print keff column. This will add another one
- Display column can print, CMFD "entropy", RMS of normalized neutron balance, RMS of CMFD fission source and OpenMC, or estimate of Dominance Ratio (only if power iteration eigensolver is used)

It would be nice to get comments on the matrix and vector headers and the PETSc solver module as I would like these to be extensible for other applications in the future.