First glimmer of rigid contact code in Simbody, not fully functional yet. There is a new test program RigidContact1.cpp that tries to duplicate TimsBoxPGS but with only calls to the (new) Simbody API.
A version of the PGS solver is present but I haven't put in the PLUS Newton solver yet.
Fix compilation problem caught by Travis.
Fix several more warnings & errors caught by clang (via Travis).
Bug fixes and tweaks to the induced impact sequence and the PGS solver.
First checkin for the PLUS Newton solver in Simbody. SemiExplicitEulerTimeStepper is configured to use that only. Has very limited functionality so far, but seems to work for the examples in RigidContact1. Tons of output in Debug mode.
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.
- 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.
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
- Fixed constraint sign convention-related bugs in position projection.
- Preallocate some temps in the PLUS solver to avoid heap activity.
- Added code to get the velocity-level solver to produce acceleration-level values such as reaction forces and body accelerations. Issue: reaction forces are somewhat incorrect since they are saved mid-step but then finally evaluated after position changes.
- Minor comment tweaking here and there.
Turn off unconditional debug messages in PGS solver.
 * removed MobilizedBody references in favor of new handle in ConditionalConstraint.h.
 * Made SemiExplicitEulerTimeStepper API more like the Integrator (should derive from the Integrator).
 * Update RigidContact1.cpp example to match API change above.
Changed handling of impact defaults in SemiExplicitEulerTimeStepper. The default now is that the capture, minCOR, and friction transition velocities all default to twice the constraint tolerance. This way by default you get exactly the COR you asked for, rather than the fancier velocity-scaled one. That should only be used if requested because, for example, it is confusing to see a non-zero COR when you set the COR to zero.
Bug fix in SemiExplicitEulerTimeStepper: was passing in non-zero expansion impulse at times when it should have been zero.