SkeletonFitting divided code in several classes.

Created abstract class CommonFitter and classes BodyFitter and LegFitter that
derived from it. Moved code in SkeletonFitter to this new classes.
Also created namespace CompMethods and moved few common functions to it.
Code auto format
Updated .gitignore to ignore new cmake test folder
Added class EnhancedIKSolver.

This class will have advanced inverse kinematic solver methods as solving a chain
but maintaining the next bone position intact
Added method to move chain but maintain the next bone on the same position.

This method is added in the EnhancedIKSolver class. Now all the classes use
EnhancedIKSolver instead of IKSolver
Moved refine positions to bone pos finder class
Simplification and optimization in methods of LegFitter and BonePosFinder.

Leg_points_index is now calculate only once per leg. Also added method to
return paw index and upper leg point with an initialised leg_point_index
BonePosFinder added leg third joint interpolation.

When searching for the first three joint positions if it find two then it tries
to interpolate the third.
CommonFitter added method to solve chains ignoring the end result.

Some times is useful simply to try and put the chain in a given position
even though it will not reach it.
LegFitter added approximate method for leg fitting.

Of the paw is placed, we have calculated a previous joint position and it fails
to put it there. Then try and put previous bone in a close position without moving
paw bone.
BonePosFinder improved leg third joint interpolation.

Instead of using the last point now a mean is done of all the points above
the next joint.
Improved leg fitting.

Introduced new gradient method that tries to fit the bones when direct
fitting fails. Used when fitting wrist and elbow
DebugUtil added cout methods for float3 and float4.
SkeletonController fix error on selecting bones for ik solver.

If root bone was to be selected negative index would be given to
the ik solver.