Fix brittle tests.

`#debug?` depends on whether or not the debugger is loaded. The tests for
it were brittle and could start to fail if you were running the specs with
the debugger loaded.
Demonstrates problem where a module can affect how `LetDefinition`s are put in the ancestor chain
Rewrite SharedContext to use a simple record/playback mechanism.
Move definition of implicit subject.

This is in prep for changing when the LetDefinitions module is included.
The use of `subject` from the `included` hook was causing problems when
I was trying to do that.
Delay inclusion of `LetDefinitions` module.

It needs to be included last so that its definitions can take precedence
in case of a name collision.
Get the current list of shared context methods from the modules.

This is the current list of what it supports:

describe
context
hooks
before
append_before
prepend_before
after
prepend_after
append_after
around
run_hook
around_each_hooks_for
let
let!
subject
subject!
its
Small refactor to add intention revealing message
Changelog entry.