Pass to the APInt whether the type is signed or not.
Use uint64_t size, as the APInt ctor.
Declare in compatible with unix way.
[#11] Implement more complex folding logic.

More robust implementation of the trivial folding. I.e now it can fold floating
points, not only literals. Also handles the cases:

  0 * smth or smth * 0 == 0
  1 * smth or smth * 1 == smth
  smth +- 0 == smth
  0 / smth == 0

We need proper tests for those cases.