control: Self registering action objects framework

Configured fan control events consist of actions that alter fan
control's overall algorithm in controlling fan speeds. The use of self
registering action objects allows quick inclusion of all supported
actions simply by giving the action object a name and extending the
registration framework. The registering of available actions are done
prior to main() starting to ensure they are ready to be
created/initialized if configured to be used. When a configured action
is requested, a single call to the ActionFactory::getAction() function
creates and returns the action object for use.

Included in this commit is a completed example use of this framework by
the "DefaultFloor" action object. Currently it is planned to have these
action objects driven by a JSON configuration use the already available
action function that was pulled into the YAML generated fan definitions
structure that was done at compile time.

Tested:
    Derived action objects registered prior to main() starting
    Action objects only created when included in the JSON config
    Only a single action of a given name is allowed
    Action objects correctly call their corresponding action function

Change-Id: Ia059d3c656aaaa9e585eec68812663dd0ee1125c
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
4 files changed