Replaced 'Void' with internal 'X' type

The purpose of this is to remove the dependency on `void` so that `pipes`
can eventually be incorporated into the Haskell Platform.  Discussions
with Edward indicate that he plans on merging `void` into `base` in
`ghc-7.10`, and when that occurs I will make `X` a type synonym for
`Void`.
Version 4.0.2 => 4.1.0