remove `FDConstraint`

Remove `FDConstraint` wrapper type. This mostly meant that the fd
constraints needed to implement `IEnforceableConstraint` and
`IConstraintWatchedStores`, most already implemented `IRunnable` of
course.

Add `id` and `with-id` fns which delegate to `-id` and `-with-id` if
the constraint implements them. This is prep to see if we can remove
those protocol fns without taking a performance hit. This would
simplify constraint definition and leave the door open for variadic
constraints - currently the final argument must be taken by the
constraint id.
remove explicit constraint id management

remove all explicity constraint id management. A minor performance
hit. The fast path is still available for those that need it.

fix `-featurec`, wasn't wrapping fs argument in a partial map.

fix affected tests. bring back purge test.