Properly use strtoll for hex constants

Since we can't rely on strtod supporting hex constants, we obviously
need to use strtoll instead of using strtod.
Support handling certain casts in expressions

This fixes evaluating the DBL_MAX constant in certain glibc versions.
Fix the limits of the loop that reads command line arguments
makedef: Handle tabbed version scripts properly

Not all sed and grep variants support '\t', so use tr. This
also fixes the current sed regexes.

Fixes #9.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Construct the converter command line using an argv array

This makes the call to this tool similar to all the other ones.
Move the command line building function above the exec_cmdline implementation
Write the preprocessed output to a pipe instead of directly to a file

This speeds up the MSVC preprocessing significantly. When writing
the preprocessed output directly to a file, MSVC seems to do
write calls for very small chunks of the file at a time, resulting
in over 30k write calls even for a small file.

This reduces the compilation time of libav by about 50%.

This is based on analysis and a similar change for the python
wrapper in Chromium by Dale Curtis.