Support passing stdin to the diff child

`:w !colordiff % -` acted weird in vim, it marked the whole file as changed. It
turned out that the following case also exhibits the issue:

    echo -e "1\n3" | colordiff <(echo -e "1\n2\n3") -

Expected output:

    2d1
    < 2

Actual output:

    1,3d0
    < 1
    < 2
    < 3

This patch solves this issue by not closing STDIN and let the child inherit it.
Next, it reads input from a variable handle instead of STDIN (since the child
is consuming it).
Fix misinterpretation of a - (not an option but stdin)

`echo 1 | diff - -` should show nothing, not "1".
Disable output buffering

The performance benefit of buffering is minimal, the blocking behavior on piping
to a secondary program is annoying.

Test set-up:
- "diff" is a file produced from `git diff` in the ACPICA repository and
  consists of 965214 lines.
- Command: time colordiff < diff > /dev/null

Before this patch:

    real    0m2.602s
    user    0m2.584s
    sys     0m0.016s

After this patch:

    real    0m3.470s
    user    0m3.048s
    sys     0m0.416s

As you can see, there is a difference, but given that there are likely other
limitating factors (tty speed, input buffering, disk speed), this increased time
can be ignored. With small diffs, there is even no noticable difference.
Merge pull request #10 from Lekensteyn/unbuf-stdout

Looks straightforward, so merging this one. Thanks Lekensteyn.
Merge pull request #7 from Lekensteyn/current

Merging this pull request because I don't see any reasons not to, having reviewed the code.
Merge pull request #9 from Lekensteyn/fix-stdin

Merging these changes, because I don't see a reason not to.  Thanks for your work, Lekensteyn