Basic stub system tests, instance and singleton methods

This adds some basic system tests for stubbing instance methods,
class singleton methods and a module singleton methods. 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.