allow requiring stub logic standalone

This reorganizes the stub logic to put all logic needed to stub
into the assert/stub file.  This allows you to require 'assert/stub'
standalone without having to require in all of assert.

The api is now fully in stub.rb.  The auto unstub context logic is
kept in the main assert file as it is only needed when running tests
and you have to require 'assert' when running tests.

Overall, this means you can use stubs outside of tests and not have
to require in all of assert.

@jcredding ready for review.