Preliminary work for implementing Automatic change of graphics level
Implement signals instead of events and listeners

Replace events and listeners by implementing signals from the sigc++ library
Change variable datatype to Float from Double and clean up functions

- Change all Double variables to Float type to avoid casting

- Remove function updateFps as it is no longer required
Add functionality to AutoGraphicsLevelManager class.

- add an instance of FpsUpdater through which it is informed of fps updates.

- add an instance of IGraphicalChangeAdapter through which it informs the graphical submodules about changes required in graphical detail.

- add structure FurtherChangePossibleAccumulater
It recieves all the return values from all slots registered to this signal and passes on a calculated OR of all the values back to the signal. It is used to calculate whether a further change in graphics level is possible.
Add basic definitions for classes for automatic change of graphic level.

Basic implementation that includes getting feedback from the graphical subcomponent on whether further change in graphics detail is possible. Implementation on what is done after no further change is possible is still pending.
Change return value of signal to bool.

This is done so that the graphics subcomponents can return a bool value stating whether a change in graphic detail by that component is possible.
Fix missing accumulater in signal definition.
Add get function for instance of IGraphicalAdaptor instance owned by AutomaticGraphicsLevelManager

This is done so that the graphical subcomponents can connect to the instance of the signal changeRequired in IGraphicalAdaptor.
Add sub-component class to manage detail level of foliage.

This class connects to the signal changeRequired to make changes in detail level of foliage when required.
It will also respond back to the signal with a boolean value that indicates whether a change can be made.
Change ordering of classes for proper visibility.

IGraphicalChangeAdapter needs FurtherChangePossibleAccumulator to be defined before it is used as an accumulator in the signal declaration of changeRequired.
Add functionality to the foliage level manager.

- Add map defaultDensityStore that maps plant types to densities.
- Add function findDefaultDensity to find the default density of a plant type as retrieved from the terrain file.
- Add function changeFoliageDensity to change the density of a particular plant type.
Use correct abs version from cmath.
Add functions to edit foliage density.

Add various functions to edit the density of a foliage by:
- Stepping it up by a step.
- Stepping it down by a step.
- Setting it to an absolute float value

updateFoliageDensity can be called to reload the foliage with the new densities.
Add definition of FoliageLevelManager.
Fix get method to return the reference properly.

- getGraphicalAdapter was returning a pointer instead of just returning the reference of IGraphicalChangeAdapter that the class owned.
- formatting changes in FoliageLevelManager
Add a reference to AutomaticGraphicsLevelManager in EmberOgre.

Add an object of AutomaticGraphicsLevelManager to EmberOgre that handles setting of the graphics level automatically according to performance.
Fix incorrect usage of sigc::ptr_fun

- sigc::mem_fun is to be used to connect class member functions.
- Fix miscellaneous formatting.
Add AutomaticGraphicsLevelManager to the makefile.

- Added AutoGraphicsLevelManager.h to the makefile to build properly.
Fix various compile errors and ambiguities.

- Fix incorrect usage of getLastFPS() without render window reference.
- Add missing constructor and destructor definitions for IGraphicalChangeAdapter.
- Move FurtherChangePossibleAccumulater structure to the header for easier use.
- Fix ambigous use of FurtherChangePossibleAccumulater in definition of signal changeRequired which caused signal template to use signal2 which takes two arguments instead of one. This is a more explicit way of using an accumulater while defining a signal.
Move FoliageLevelManager to environment with new definition.

- Change owner namespace of FoliageLevelManager to Ember::OgreView::Environment.
- Shift class header and declaration to environment folder.
- Redefine most of FoliageLevelManager.