Major Refactoring

Notes:

* Use of structs, instead of class. Ditching
OO design in favor of a data-driven design. No more data encapsulation.

* Unification of base struct with cpu implementation. Common functions
are now implemented within base class.

* Changed the use of functors, to completely abstract how the solver operator will access and
  transform data.
Working CPU-PSO prototype.

Changes:
* Evolutionary solver base struct, now has basic population
  initialization, defined as part of it's setup.
* Vector initialization within defined bounds, is now a vector agnostic
  function. May be used on vectors that are not necessarly part of the
  population struct.
* Vector cropping to defined bounds is now part every evolutionary
  solver's flow, after population transformation.
Implemented evaluation functors.

Generic functors provide a flexible way to implement the way fitness
functions are computed, without restricting the data accesible to the
evaluator. If required, the implementation of the functor, can extended
to access information outside the framework.
Merged bound mapping implementation into evaluator's struct.
CUDA PSO Prototype Scaffold (work in progress)
Partitioned implementations.

Notes:
* Conflicts arrised when sharing CPU implementation code, with GPU
implementation code.
PSO GPU Prototype with working calls.
PSO GPU Prototype running.

Notes: Fixed update_records_kernel. Still get's stuck without converging.
Fixed wrong type declaration for PSO solver constants.
Completed Canonical PSO Implementations.

Changes:
* Implemented per particle record updater.
* Changed particle record initialization. Was missing valid fitness
  valuation which needed to pass through solver's evaluator.
Renamed PSO particle/isle record variables across operators.
Pseudo functional GA CPU implementation

Note: Check record isle updating, and implement elitism.
Fix Breeding operator.

Removed inline bound mapping from breeding operator mutation code. Genomes are cropped
after transformation.

TODO: Implement elitism replacement.
Working GA CPU Implementation.

Changes:

* Evolutionary solver's update_records() now tracks the agents in each
  isle, which have maximum and minimum fitness value within their
  isle. The solver stores their fitness, index and genome. Useful for
  both PSO per isle social global best solution, and GA elitism.

* Solver's vector cropping to it's defined bounds, has to be part of the
  specific solver implementation of the transform() definition.
Fix update_records kernel shared memory allocation.
Running GA Cuda Prototype

TODO:
* Check PSO(CPU) and GA(CUDA) implementations. They don't converge fast
  enough. Ergo... something is wrong.
Merge pull request #1 from rdelcueto/experimental

Experimental