Add $castIfConforms macro.

Syntax: $castIfConforms(protocol, object)

Checks if a given object conforms to a given protocol, using the same syntax
that $castIf uses for classes.
Deprecate $depends and document SPS_KEYPATH