Revert "use an internal method name to avoid overriding helper methods, this will make behaviour more predictable"

This reverts commit ec4056a1ac839ff3fb76669bb741d8b27633a2d8.
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
Merge branch 'better-fix-for-let-definitions-eagerly-included'