BeforeEach and AfterEach definition from anywhere in Context or Describe

Taking more inspiration from rspec, it no longer matters whether BeforeEach and AfterEach blocks are defined before or after the tests (or before or after the Context blocks, in the case of Describe).

Describe and Context accomplish this by parsing the scriptblock passed to them via the Fixture parameter and loading up BeforeEach / AfterEach blocks before invoking it.
At the time the Fixture block is executed, "BeforeEach" and "AfterEach" become empty functions, to avoid errors or weird behavior.

Because some of the original test code for this branch relied on the old behavior of having BeforeEach / AfterEach blocks only apply to tests that come after them in the code, I had to change the tests slightly along with this update.