Fix type for value
Improve type handling for locals

If we see multiple code paths that end up setting locals, we can't
assume the type anymore of those paths involve different types.

Fixes #2668
Revert "Remove known type optimization for now"

This reverts commit 342e6c2ff44d3be7f9a6a6005d9cb2f1971d8547.

This bug was also very likely caused by the same issue as #2668
Fix indent in jit_operations.hpp
Create no ops for rb_obj_hide, rb_obj_reveal and rb_str_resurrect

I don't know why exactly they are used, but they seem some kind of MRI
internal. We just ignore them for extensions that use this.
Add additional macro's for extensions
Fix style issue with not using {}
Raise more specific exceptions in case of pipe() and fork() failure

This will give the user a more descriptive error, for example if there
is not enough memory to fork().