Create a __no_return__ macro to flag a function as not returning

This is needed to compile with clang >= 3.1, as clang demands
functions that don't return to be marked as such. This is the case
for any function that always throws for instance, which we currently
have two off.

This now also fixes clang >= 3.2, where we optimized out allocation calls which is not caught. Also added the patches from yocchi, which is needed for travis.