Handle manual and grep skipping the same; cleanup

- Test#skip is now only used to skip tests from within a test.
- Setting the `skipped` property on a test before it is run will cause
  it to be skipped. grep skipping is now handled by setting the
  `skipped` property on a test.
- Both grep and manual skipping happen at essentially the same point
  now, just before a test function is executed, so `beforeEach` and
  `afterEach` now run for both cases.