"Merging" ZMP and UP/Down slope fitness

Made some implementation changes to allow merging the ZMP fitness and
the up/down slope fitness, while still keeping each datum separately.

* GetTopPop
Now the best population is selected considering only the fitness values
in GA.FitIDs.

* InitGen
Added the modifications to GA.FitFcn (which now includes the name of the
function and the IDs on the Fit vector that it will occupy). MOST LIKELY
WILL NEED FURTHER IMPLEMENTATION, ESPECIALLY FOR BACKWARDS COMPATIBILITY
WHEN INPUTTING AN OLD FILE.

* MOOGA
Added the modifications to GA.FitFcn.
Modified SlopeFit to save all the output when walking on the first slope
(only the steps on the desired final slope are saved usually to reduce
computations).
Implemented the combined Up/Down+ZMP slope fitness function UDZMPFit.

* MOOGA/Plot
Added the modifications to GA.FitFcn.

* MOOGA/Run
Added the modifications to GA.FitFcn.

* RunSeq
Added the modifications to GA.FitFcn.
Bug squashing of new implementation

* MOOGA
INCREASED MaxBack to 0.2 (i.e. the max ankle length for scoring ZMP
points is 20cm)
Corrected the implementation of the new FitInd to properly display the
top results.

* Plot
Corrected the implementation of the new FitInd to properly display the
results.

* Quantile
Removed the option of duplicating the few top results when so many
scored 0 in almost all categories. This feature conflicted with the
Pareto implementation.

* MOOGA/Run
Added a call to the Neuron fire event when initializing the simulation.
Now the init cond for the CPG's phase is 0.

* RunSeq
Commented the call to handle a ground collision event when initializing
(only neuron fire event is called).

* Simulation/Run
That sneaky MOOGA was at it again... it managed to find a simulation
that sneaked under the ground and somehow ran underground super fast...
So, now we routinely check for "tunnels".

* WalkOnSlope
Instead of resetting the model stance foot back to (0,0), the terrain's
start at the last stance foot position.

* Terrain/Set
Added start_y and end_y as options to set. Don't know why they were
missing.
New ZMP fit limits and some improvements

* MOOGA
Fixed the implementation of Find so it can work with the new multiple
fitness output implementation.
Changed the ZMPFit output so it will reach 2 when the required foot
length is 0, 1 when the foot is as long as allowed and go quickly gown
to 0 as the foot gets longer.

* Plot
Added some code to normalize fitness values that go above 1 but still
display the maximum achieved.
Some more bugs and different MOOGA attempts

* Analyze
Reduced the step size.
Corrected the bug where the sorted slopes data wasn't saved.

* MOOGA
Added a SetFittest method to easily select amounts of top individuals to
keep / mutate and new random individuals as percentage of the population
(instead of fixed numbers).

* MOOGA/Plot
Corrected the fitness normalization code.

* MOOGA/Run
Commented the "post-processing" for ZMP which multiplied it by the best
up/down fitness achieved.

* Poincare
The simulation is now run without a set tstep (ode45 should choose
automatically) to prevent errors due to large tstep. To run faster, the
simulations are run without graphics when calculating the eigenvalues.

* Simulation/Render
Added an RSkip property to skip rendering some frames when the tstep is
very small. This can result in "jumpy" animations but it runs faster.

* Simulation/Run
Implemented the ability to run without a set tstep (it's set to 0.0111
to avoid conflicts with other parts of the code).

* Simulation
Increased the tolerance required for convergence (1e7 instead of 8e7)
and reduced the error size (from 1e4 to 1e5). Also implemented the
ability to run without a set tstep (it's set to 0.0111 to avoid
conflicts with other parts of the code).

Added some GA implementations to optimize controllers first on flat
terrain, then optimize FB gains on slopes. Also GenFBtuner runs a
simulation with a "flat genome" and allows to hand tune the FB gains.
Worked on analysis

* Analyze
Added some features for period doubling analysis. The display function
now needs updating to include the new data. Corrected a small bug about
ExtPulses (see Simulation below).

* DisplayGen
Added a method for MOOGA that displays the data from a genome analysis
(and performs it if it hasn't been performed). The GUI can show
different plots: ICs, Eigenvalues, ZMP, Torques or Power required VS
Slope, as well as LC time series for each individual slope.

* GetCleanPulses
Method was moved to a separate file. I added some lines to identify
which pulses are external (based on sim.Con.ExtPulses) instead of
assuming it's pulse #1. This was causing trouble when a genome didn't
possess an external pulse. THIS NEW CORRECTION NEEDS CHECKING!!!

* Simulation
Decreased epsilon to 5e-6 (instead of 1e-5).
Moved GetCleanPulses to a separate file.
Merge remote-tracking branch 'origin/Analysis_Stash' into Analysis