Don't run before_fork hooks if we aren't going to fork

When FORK_PER_JOB=false is set in the environment, Resque will not actually fork
for each job. Unfortunately, before_fork hooks will still run (although
after_fork hooks will not). This can lead to problems when the after_fork hook
has dependencies on the before_fork hook.

This change makes it so that before_fork hooks will no longer run when
FORK_PER_JOB=false.

I've also adjusted the conditions for the Worker#will_fork? method to ignore the
$TESTING global. Many of the worker tests were implicitly relying upon the fact
that forking would not happen during tests in order to work correctly, so those
tests have been changed to set FORK_PER_JOB=false in the environment instead,
via a new test helper, called without_forking.