LOGIC-98: fix for LOGIC-98, by making nominal aware of fd.
this `walk*`s should not be necessary as far as I can tell
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.
make `IEnforceableConstraint` a marker interface

And remove yucky extension of `IEnforceableConstraint` to `Object`.

Related clean up references to types and interfaces defined in
logic.clj.
tidy up protocol references, type/interface references, & namespaced
keywords in nominal.clj.