`check` with predicate functions, introducing declareConstructor.

Variant of https://github.com/meteor/meteor/pull/1008, moving the code to recognize constructors out of the matching code to where it can be used elsewhere (such as by controllers), and as a convenient place to add heuristics to detect constructors if desired.

Allows predicates to be used as a match pattern, replacing
`Match.Where`.

Constructors can be used in a match pattern either with
`Match.InstanceOf`, or by making the constructor known to Meteor with
`Meteor.declareConstructor`.

Predicates are required to return a boolean `true` to match, which
avoids the problem of an undeclared constructor being used as a match
pattern silently succeeding for arbitrary input.