[cmake] Try to handle rpath in a smarter way
[compiler] Remove code duplication between {wait, assert}_decl

No functional change expected
[compiler] Make assert and wait accepts complex body

Only parsing and validation are done. Code generation is not correct at
this point.
[model] Make wait and assert accept an abortable_computation

In this way, they can handle more complex computation, with some
information propagation
[compiler] Generate code for complex compution in wait, assert
[compiler] Don't try to propagate too much the constant in let

It needs more complex flow analysis to do it properly. So, for moment,
only do that for variable generated by the compiler, and not for the one
provided by user.
[model] Compute more properly error() for assert and wait
Remove support for while expression

The code is not well tested, never used, and now, you can express the
same thing using wait

while { cond } { X } is strictly equivalent to wait ( X + cond )
[compiler] Add some test for parsing of complex wait / assert
[model] Add some test for compute_assert_expression
[model] Improve a bit the comments of compute_assert_expression

No functional changes