Stub system tests for delegated methods

This adds some system tests for stubbing methods that are delegated
(via `method_missing`). The goal is to throughly test assert's
stubbing in the same way it would be used in a separate test suite
and to find any strange issues that can come from mixing stubs or
using them in strange scenarios. These include edge cases and error
cases that ensure assert's stubbing tries to alert the users to
possible issues as much as possible. For delegated methods, assert
doesn't provide any arity checking of the methods. This is the
only difference between stubbing a normal method and a delegated
method.