Specialise error message for confidential access

Accessing a confidential method from outside of an object previously
reported that there was no such method. The exception remains the same,
but the message notes that the method is present but not accessible
instead.

The default assert() of patterns now clears its stack on raise again,
but will only clear the implementation details of the raise rather than
the whole stack. This allows it to handle potential errors other than an
Assertion Failure in the process.