Add check for mex pointer in collisionDetect

Also removes the ugly bit of code that called doKinematics with mex enabled if
the method received a kinsol with mex disabled. Now if the kinsol is non-mex or
if there is no mex pointer in the RBM, collisionDetect only performs collision
detection between elegible terrain contact points and the terrain.
Fix definition of nk in contactConstraintsBV
Cache terrain contact points at RBM compile

The results of `getTerrainContactPoints(model)` will not change between
compiles of `model`. Generating that result is slow, since it involves growing
an structure array of unknown length. At compile time, cache the result in a
protected property.
Alternte calling syntax for collisionDetectTerrain.

Now if a kinsol and terrain contact point struct are passed,
`collisionDetectTerrain` will compute the world location of the contact points
prior to querying `getHeight`. The old syntax (passing in world-frame contact
point locations) is still supported.
Add contactConstraintsFromCollisionData

The computation that was in `contactConstraints` is now in this method. This
allows computation of contactConstraints-style output from collision data
generated by methods other than `collisionDetect` (e.g. using the output of
`collisionDetectTerrain` directly)
Add convertFrictionConeToBV method.

This method contains the computations that used to be in
`contactConstraintsBV`. This allows the computation of
`contactConstraintsBV`-style outputs for inputs that don't necessarily come
from calling `contactConstraints`.
Adds contactConstraintsTerrainBV method

This method computes `contactConstraintsBV`-style outputs for terrain
interactions only.
Add 'terrain_only' option to collisionDetect

This lets us query just terrain interactions.
Use body_idx in terrain part of collisionDetect

If `active_collision_options.body_idx` is non-empty, only check the bodies
listed against the terrain.
Add contactPositionsFromCollisionData

Put computations that were being performed both in `contactConstraints`(in an
optimized way) and in `contactPositions` (in an unoptimized way) into the new
method. Those methods are not updated in this commit, however.
Update contactPositions[Jdot]

These methods now call `contactPositionsFromCollisionData`.
Update contactConstraintsFromCollisionData

It now calls `contactPositionsFromCollisionData`.
Add contactConstraintsTerrainBV to TSRBM
Add getTerrainContactPoints to TSRBM
Make collisionDetect[Terrain] work with TaylorVar
Exclude world when finding terrain contact points

... because world-fixed objects don't collide with the ground.
Add RigidBodyFlatTerrainNoGeometry class

This is useful for testing whether our collision detection plumbing works for
non-`RigidBodyFlatTerrain` terrains.
Populate cpp RigidBody contact_pts

Uses getTerrainContactPoints.