compiler: Generalise RecordTypePredicate

Generalise et.RecordTypePredicate in to et.TypePredicate.
et.TypePredicate can test for any Scheme type and the planner is careful
to not create duplicate instances of the same predicate.

This is only accessible through (define-record-type) at the moment but
the frontend will open this up to arbitrary types in the next commits.