Repository cleaning, MASA work preparation
Introducing a simple crowd demo application

- Using SimpleJSON for scenarios
Build system overhaul

- Introducing Ant & Poney for dependencies retrieval and CMake configuration
- Introducing CMake install process
- Minimum Cmake required version is now 2.8.7
- Generating a zip package using CPack
- Generating RecastNavigationConfig.cmake
    - http://www.cmake.org/Wiki/CMake/Tutorials/Packaging
    - http://www.cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets
    - http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file
- Renaming DebugUtils to RecastDetourDebugUtils

To enjoy the change, build and install. The installed package (in the specified
CMAKE_INSTALL_PREFIX) contains a 'build/cmake' directory containing
RecastNavigationConfig.cmake.

When using RecastNavigation in a project built with CMake, you just have to do a
find_package(RecastNavigation) and set RecastNavigation_DIR to this directory.
Usable variables and targets are defined in RecastNavigationConfig.cmake.
Adding initial simple unit tests

- The target DetourCrowdTest is dedicated to unit tests of DetourCrowd;
- We use [catch](https://github.com/philsquared/Catch) a dependency-free header-only unit test framework;
- A test-launching target named RUN_TESTS is created by Cmake.
Introducing different steps in the crowd update

- `DetourCrowd::updateEnvironment` updates the environment perception of the agents,
- `DetourCrowd::updateVelocity` is the core of the navigation behavior, it computes a new velocity for the agents given their settings (path following, separation, collision avoidance,...)
- `DetourCrowd::updatePosition` apply the computed velocity to the agents and act as a light physic engine to forbid collisions at the last minute.

The existing `DetourCrowd::update` combine the three methods and have the same behavior as before.
findPath() now returns the total cost of the computed path.
Allowing users to dynamically change the position of an agent.

- dtCrowd::updateAgentPosition introduced and unit tested.
Extracting the CollisionAvoidance and PathFollowing modules

Conflicts:
	DetourCrowd/Include/DetourCrowd.h
	DetourCrowd/Include/DetourObstacleAvoidance.h
	DetourCrowd/Source/DetourCrowd.cpp
	DetourCrowdDemo/Source/Visualization.cpp
	DetourCrowdTest/Source/DetourCrowdTest.cpp
Creating a framework to create the whole simulation.

- Creates the navigation mesh and the crowd.
- The framework is called DetourSceneCreator.
- Some warnings have been removed.
- Cleaning some code in the unit tests.

Conflicts:
	DetourCrowd/Source/DetourCrowd.cpp
	DetourCrowdTest/Source/DetourCrowdTest.cpp

Conflicts:

	DetourCrowdDemo/CMakeLists.txt
Introducing the "Flocking" behavior and its dependencies

- dtAllocBehavior now returns 0 when allocation fails.
- New Alignment Behavior
- New Cohesion Behavior
- New GoTo Behavior
- Flocking behavior now uses existing behaviors
- PathFollowing behavior doesn't include a separation behavior anymore

Unit Tests:
- Fixing a bug where the navigation mesh was not correctly created
- Tests now splitted into different files
- Class responsible for creating the scene
- Testing is the right number of agents is updated when calling updateEnvironment()

Conflicts:
	DetourCrowd/Include/DetourCrowd.h
	DetourCrowd/Source/DetourCrowd.cpp
	DetourCrowd/Source/DetourPathFollowing.cpp
	DetourCrowdDemo/Source/Visualization.cpp
	DetourCrowdTest/Source/DetourCrowdTest.cpp

Conflicts:

	DetourCrowd/Source/DetourCrowd.cpp

Conflicts:

	DetourCrowdTest/Source/DetourCrowdTest.cpp
Adding a common interface for the steering behaviors.

- Introduction of the intermediate interface dtSteeringBehavior common to force based behaviors
- Some behaviors can be flagged as "correcter" behaviors (such as the
  collision avoidance behavior)
- Many parameters have been moved to the dtCrowdAgentParams structure

Conflicts:
	DetourCrowd/Source/DetourCrowd.cpp
Adding the composite "Pipeline" behavior

- Unit and functional tests
- nvel has been removed from dtCrowdAgent
- dtCrowd no longer has a path following or a collision behavior

Conflicts:
	DetourCrowd/Source/DetourCrowd.cpp
Behaviors parametrization

- Each behavior may contain parameters
- Adding a structure dtCrowdAgentEnvironment which contains everything
  related to the environment of an agent (neighborhood, close obstacles,
  etc.)
- dtPathFollowing is no longer a steering behavior
- Each behavior has its own method for dynamic construction and
  destruction
- Some constructors are no longer inline
- Lots of features have been moved to the dtPathFollowing class
- Creation of the dtCrowdQuery class
- Parameters are associated to agents with a hash table
- dtCrowdAgentParam has been merged to dtCrowdAgent

Conflicts:
	DetourCrowd/Source/DetourCrowd.cpp
	DetourCrowd/Source/DetourPathFollowing.cpp
	DetourCrowdTest/Source/DetourCrowdTest.cpp
dtCrowd's agent manipulation API overhaul

- Users can no longer modify agents directly

Conflicts:
	DetourCrowd/Include/DetourCrowd.h
	DetourCrowd/Source/DetourCrowd.cpp
	DetourCrowdTest/Source/DetourCrowdTest.cpp
Introducing a documentation target relying on Doxygen
Various bug fixes and improvements

- removing the addBehaviorParam() method
- The y member of the velocity is set to 0
- Cleaner interface for steering behaviors
- The id of an agent now is an unsigned
- doUpdate() is now protected
- Some destructor are virtual
- Agents no longer have a desiredSpeed
- Use of old and new parameters. (+2 squashed commits)
- The update method of the behaviors now takes a CrowdQuery
- Correction of a bug with the path following
- Misc modifications on RecastDemo and DetourCrowdDemo to follow the
  changes in the interface
- Correcting the ordering of some variables in initialization lists
- Removing unused variables

Conflicts:
	DetourCrowd/Include/DetourCrowd.h
	DetourCrowd/Source/DetourCohesionBehavior.cpp
	DetourCrowd/Source/DetourCrowd.cpp
	DetourCrowdDemo/Source/Visualization.cpp
	DetourCrowdTest/Include/DetourBehaviorsTests.h
	DetourCrowdTest/Include/DetourPipelineTest.h
	DetourCrowdTest/Source/DetourCrowdTest.cpp
	DetourSceneCreator/Source/CrowdSample.cpp
Fixing pipeline bug

- The pipeline now updates oldAgent and newAgent when calling the next behavior
- collisionQueryRange is now an attribut of dtCrowd and must be set when initialiazing the crowd
- dtCrowd::getActiveAgents() first parameter is now const
- Renaming some attributs in dtSeparationBehavior
- Cleaning some code in dtCollisionAvoidanceBehavior
- Documentation update
- Renaming some classes

Conflicts:
	DetourCrowdTest/Source/DetourCrowdTestUtils.cpp
Taking some feedback into account.

- Cleaner code
- error cases now handled
Correcting compilation warnings

- Never used parameters
- "dumb" warning ignored
- todo at some point, solve signed/unsigned comparisons
Unit tests cleanup

- Tests are now defined in their own .cpp