RE-engineered the time stepper and impulse solvers to apply expansion impulses inside the solver rather than externally in the time stepper. That allows the expansions to be applied gradually over the PLUS sliding intervals, with the correct effect on stiction limits.

Very lightly tested!
Fix for gcc.
Use CMake modules to find BLAS and LAPACK
Disable Visualizer compilation if dependencies are not found
- Fixed bug in handling of sequential induced impacts when using Newton restitution.
- Added missing setters and getters for various SemiExplicitEulerTimeStepper options.
- Some progress towards implementation of simultaneous and limited-induced-impact options.
Quick fix: disable find_package() of BLAS and LAPACK for Windows
Merge pull request #127 from elen4/improveCMake

Improve dependencies handling through CMake
Merge branch 'master' of https://github.com/simbody/simbody
- Implemented bilateral position projection (the default), with unilateral & no projection as options.
- Made position projection unconditional (not sure this is a good idea but seems to help in tests so far).
- Added solveBilateral() to ImpulseSolver interface to support bilateral position projection and implemented PGS-style (iterative) and PLUS-style (direct) versions.
- Improved documentation.
- Added convergence test to Newton iteration so that it can quickly detect failure to solve inconsistent equations rather than thrash.
- Fixed bug in PLUS: was looking at all sliding directions to determine step size but should have only looked at active ones.
- Cleaned up impact loop by separating the non-iterative Simultaneous mode from the interative Sequential and Mixed modes.
- Fixed bugs associated with proper classification of participating constraints in some circumstances.
- Made some minor tweaks to the RigidContact1 test program.
- Added ConstantCoordinate Constraint (a position-level mobility lock).
- Added HardStopLower and HardStopUpper unilateral contact constraints that use ConstantCoordinate as their underlying Constraint.
- Modified RigidContact1 to add stops to the Pencil example and left it set to run that way.
- Implemented unilateral contact sign convention (needed since upper/lower stops have opposite conventions).
- Fixed equation documentation in the PLUS solver.
- Modified Constraint so that it can be marked "conditional", for use by conditional constraint-aware solvers (not currently in use).
- Add missing virtual destructor to ImpulseSolver class (thanks, @chrisdembia).
Fix bug in optimizer test suite nlpqlp (for loop limit was too big). This was detected by gcc's aggressive loop optimization when it tried to unroll the loop and found itself off the end of an array. This fixes issue #128 reported by @scpeters.
Merge pull request #129 from simbody/fixCompilerWarning-issue128

Fix bug in optimizer test suite nlpqlp (for loop limit was too big).
Add missing virtual destructor and some comments.
Merge branch 'rigidContact' of https://github.com/simbody/simbody
Fixes #130.

I decided to leave SIMBODY_SONAME_VERSION as a CACHE variable, but to
use the FORCE setting for it. The reason is that I want to be able to
see it in the CMake GUI, but I don't actually want it to be cached. This
is what we are already doing with SIMBODY_VERSION.
Fixes #128.

In travis, use the -Werror flag, as advised by @scpeters. Doing so
required me to improve how I add the -std=c++11 flag to CMAKE_CXX_FLAGS.

In the future, the way I set CMAKE_CXX_FLAGS should maybe conform to how
@sherm1 has done it, with a separate BUILD_CXX_FLAGS variable.
Fix bug in optimizer test suite nlpqlp (for loop limit was too big). This was detected by gcc's aggressive loop optimization when it tried to unroll the loop and found itself off the end of an array. This fixes issue #128 reported by @scpeters.
Merge pull request #130 from chrisdembia/issue-130

SIMBODY_SONAME_VERSION not updated after rerunning CMake.
Merge pull request #131 from chrisdembia/issue-128

Fixes #128

Travis likes it!
Move all 3.3 mentions in debian metadata to 3.4