Some small changes to simplify the generated IR.
+ mark the alloc routines as no throw and no alias (=attribute(malloc), noexcept).
  This removes a lot of invokes in the IR and marks every alloc call as noalias.
  (While I felt somewhat frightened by the malloc attribute AFAIK the generated IR looks reasonable.)
+ inline the trivial Box constructor
+ fix dead allocs pass: we will now remove the useless list creation inside f2 in speculation_test.py

While this  currently does not show much speed change it at least makes the generated IR much easier to read.
And theoretically should generate code faster by reducing the amount of exception handling tables
and provide better optimization opportunities by having more functions marked as noalias.