Add CG

A proposal for a possible implementantion of the non-linear conjugate gradient method.

Points to consider:
* CG variants are quite verbose at the moment. We could consider renaming FletcherReeves to FR, PolakRibierePolyak to PRPPlus, etc.
* More variants can be added easily
* After a very limited testing, surprisingly, Hestenes-Stiefel seems to perform better than Polak-Ribiere.
* Restarting after n iterations without a restart and after an angle condition fails is performed always. A user setting to turn these restarting strategies on/off could be added.

#16 should be reviewed and merged first.