Support for arbitrary assertions

This was previously disabled due to performance problems in dependency
computation. The dependency algorithm has been changed so performance
penalities are proporitional to the number of assertions used and
their complexity (with respect to dependency).