Read input from one or more files instead of stdin

This is more convenient to use and will be necessary later when we'll need to make multiple passes over the input.

Also renamed `join` to `allowJoin` in Options because of a GHC 7.8 warning: `Local definition of ‘join’ clashes with a future Prelude name - this will become an error in GHC 7.10, under the Applicative-Monad Proposal`.