Added a change originally by DWD.

This makes calls to open() and fcntl() made by _stdio_fopen()
go to an undefined externals __libc_open() and __libc_fcntl().

These are treated in specially in KLEE in
linkWithUclibc(llvm::Module *mainModule)

so that they get renamed to calls to KLEE's open() and fcntl()
models.

I don't know why KLEE treats these specially (maybe it's because
of the variable number of arguments issue?)
Apply patch originally made by DWD, CRC and PG (who??)

This patch adds the following behaviour

If KLEE_SYM_PRINTF is defined

- printf and vprintf are defined (they just call vfprintf() )
- fprintf will also always call vfprintf()

By doing this calls to these functions can behave symbolically

if KLEE_SYM_PRINTF is **not** defined (default)

- printf and vprintf are **not** defined so calls to this from
  programs KLEE is executing will try to call externals.

- fprintf will always call vprintf. Because vprintf is no longer
  defined when KLEE is executing a program with a fprintf call
  it will also call vprintf as an external.

By doing this calls to these functions should trigger calls to
external functions and so these functions can no longer handle
symbolic input.

The original comment on this was:
"""
Ok, this is really subtle, but if we are NOT running with symbolic
printfs (for improved speed), we should simply print stdout and
stderr to native stdout using vprintf, but if we are running with
symbolic printfs (for completeness, esp. for cross-checking), we
should always run instrumented code (e.g., vfprintf)
"""