In QueryLoggingSolver call flush() on std::ofstream so that queries
get correctly logged if an assertion failure is hit later on.
Port to LLVM 3.3

Major changes are:
- Switching to llvm-link to build archive files
- Use GetMallocUsage instead of GetTotalMemoryUsage (be aware of bug in
  LLVM 3.3 http://llvm.org/bugs/show_bug.cgi?id=16847)
- intrinsic library functions like memcpy/mov/set use weak linkage to be
  replaced by e.g. uclibc functions
- rewrote linking with library
- enhanced MemoryLimit test case to check if mallocs were successful
Fix implementation for putchar

According to manual: putchar() return the character written as an
unsigned char cast to an int or EOF on error.

Use return value of write to return the correct value for putchar.
Modified the buildmode of bitcode libraries.

The Default is Release+Asserts but if you are building KLEE with debug symbols (for example
"Release+Debug+Asserts" or "Debug+Asserts") then this breaks because KLEE will
look for the bitcode libraries in the wrong place because the
RUNTIME_CONFIGURATION macro is not defined to be what KLEE actually builds as.

This has been tweaked so that when we build the bitcode libraries the Makefile
variable "DEBUG_SYMBOLS" is correctly overridden.
Added some of the common *at functions to the model
Fixed unused static function warning for forceImport
Fixed multiple definitions of POSIX file functions

Function like stat() were defined for 32bit and 64bit version.
Added compile time based selection of appropriate version
using GNUC macros __x86_64__ and __ppc64__.
Fixed bug where divide by zero bugs would only be detected once in a program
even if there were many divide by zero bugs.

The fix basically inlines all function calls to klee_div_zero_check()
so that each call to klee_report_error() is a unique instruction
for each instrumentation of a divide operation.

It also seems that inlining the call "magically" fixed the debug information
(file and line number) of the instruction so that the debug information on the
inlined instructions matches that of the instrumented division instruction.

Note that the command line option -emit-all-errors could be used to
workaround the bug fixed in this commit.
Implemented runtime check for overshift (controllable with --check-overshift
command line argument).

Overshift is where a Shl, AShr or LShr has a shift width greater
than the bit width of the first operand. This is undefined behaviour
in LLVM so we report this as an error.
Merge branch 'fix_runtime_build_mode' of https://github.com/delcypher/klee into delcypher-fix_runtime_build_mode
Merge pull request #21 from delcypher/fix_query_logging

Fix queries not being logged correctly if an assertion failure is hit.
Compile separate version of fd files only for LLVM 3.3 or higher
Merge pull request #23 from MartinNowack/fix_putchar

Fix implementation for putchar
Merge pull request #17 from MartinNowack/LLVM33

Make KLEE compile with LLVM 2.3.
Lower intrinsic instruction "llvm.trap" to a call of the abort() function.
Replace implementation of linkWithLibrary()
Add missing header file and linker parameter
Obey --max-forks in switch statements
Merge pull request #27 from antiAgainst/intrinsic-trap

Lower intrinsic instruction "llvm.trap" to a call of the abort() function.
Merge pull request #25 from paulmar/master

Added some of the common *at functions & others to the model.  Obey --max-forks in switch statements.