Fix issue #245 part 1)

0xFFFF should be equal to -1, but the current lexer returns
65535. This value is then converted to -1 only when generating the
bytecode. Thus, any bound checking becomes really hard.

This patch fixes the lexer to correctly return a signed value for binary
and hexadecimal values. On the other hand, do not convert integer value
to the signed equivalent, as the user is expected to enter a signed
value. Thus, values above 32767 must be illegal.
Fix issue #245 part 2)

Perform a better overflow check on integer values, especially in the case
of negative values. If we have a Token::TOKEN_OP_NEG in front of a
Token::TOKEN_INT_LITERAL, the parser will negate the value of
Token::TOKEN_INT_LITERAL, then perform the parsing of the literal as
usual. This reduces the number of code paths checking for integer bounds.

TODO:
- Constants still escape bound checking in many cases, but this is more
  hard to take into account. The cleanest implementation would use a
  preprocessor to replace constants' occurences, before performing
  the regular parser pass.
Add unit tests for the previous two fixes - issue #245
Fix unused variable warnings

Define an UNUSED macro, like QT_UNUSED.
Fix most of the 'comparison between signed and unsigned integer expressions' warnings
Merge pull request #253 from vaussard/bug-fix/for-1.4-v2

Fix issue #245, add unit tests for this case, and fix some compilation warnings.