Only attempt multiprocessing if Process.fork is available

Two changes here. The first and most significant is that Parallel only attempts multiprocessing if forking is available in the Ruby implementation. Some platforms such as Windows do not implement fork, and this can be detected directly. For example, on the Windows port of Ruby:

    Process.respond_to?(:fork)
    => false

As for what to do in such a situation, I think "work_direct" and a warning message to $stderr would be the simplest and most non-intrusive way to deal with it.