beam_validator: Refactor branch handling
beam_validator: Refactor branch handling

While complex_test made certain branching instructions a lot easier
to read, we're still using `branch_state` for many others which is
hard to read and makes it impossible to "abort" branches on type
conflicts.

This commit replaces nearly all uses of `branch_state` with a
general branching mechanism, improving readability and paving the
way for proper type conflict resolution.

aboroska/otp,kvakvs/otp,bsmr-erlang/otp,uabboli/otp,bjorng/otp,emacsmirror/erlang,kvakvs/otp,bjorng/otp,ferd/otp,mikpe/otp,bsmr-erlang/otp,g-andrade/otp,bsmr-erlang/otp,vladdu/otp,rlipscombe/otp,vladdu/otp,dumbbell/otp,electricimp/otp,emacsmirror/erlang,uabboli/otp,rlipscombe/otp,lrascao/otp,bsmr-erlang/otp,potatosalad/otp,lrascao/otp,uabboli/otp,electricimp/otp,potatosalad/otp,aboroska/otp,ferd/otp,dgud/otp,dumbbell/otp,getong/otp,rlipscombe/otp,mikpe/otp,getong/otp,legoscia/otp,bjorng/otp,ferd/otp,aboroska/otp,kvakvs/otp,ferd/otp,jj1bdx/otp,bsmr-erlang/otp,isvilen/otp,rlipscombe/otp,jj1bdx/otp,vinoski/otp,bjorng/otp,kvakvs/otp,jj1bdx/otp,lrascao/otp,bsmr-erlang/otp,legoscia/otp,lrascao/otp,emacsmirror/erlang,isvilen/otp,vladdu/otp,bsmr-erlang/otp,bsmr-erlang/otp,erlang/otp,erlang/otp,mikpe/otp,RoadRunnr/otp,kvakvs/otp,getong/otp,erlang/otp,dgud/otp,dgud/otp,bjorng/otp,potatosalad/otp,dumbbell/otp,isvilen/otp,isvilen/otp,erlang/otp,dumbbell/otp,dgud/otp,getong/otp,ferd/otp,g-andrade/otp,vinoski/otp,vinoski/otp,rlipscombe/otp,lrascao/otp,emacsmirror/erlang,getong/otp,dgud/otp,potatosalad/otp,rlipscombe/otp,isvilen/otp,electricimp/otp,vinoski/otp,kvakvs/otp,vinoski/otp,potatosalad/otp,uabboli/otp,uabboli/otp,lrascao/otp,vladdu/otp,legoscia/otp,mikpe/otp,bjorng/otp,electricimp/otp,electricimp/otp,aboroska/otp,uabboli/otp,vladdu/otp,g-andrade/otp,mikpe/otp,uabboli/otp,potatosalad/otp,aboroska/otp,legoscia/otp,mikpe/otp,legoscia/otp,rlipscombe/otp,aboroska/otp,legoscia/otp,emacsmirror/erlang,bjorng/otp,RoadRunnr/otp,lrascao/otp,isvilen/otp,erlang/otp,mikpe/otp,kvakvs/otp,g-andrade/otp,RoadRunnr/otp,ferd/otp,jj1bdx/otp,legoscia/otp,electricimp/otp,uabboli/otp,getong/otp,erlang/otp,dumbbell/otp,bsmr-erlang/otp,bjorng/otp,electricimp/otp,g-andrade/otp,rlipscombe/otp,dumbbell/otp,bjorng/otp,RoadRunnr/otp,dumbbell/otp,isvilen/otp,jj1bdx/otp,vinoski/otp,erlang/otp,RoadRunnr/otp,vinoski/otp,emacsmirror/erlang,isvilen/otp,isvilen/otp,vladdu/otp,RoadRunnr/otp,legoscia/otp,bjorng/otp,erlang/otp,rlipscombe/otp,lrascao/otp,erlang/otp,ferd/otp,vinoski/otp,RoadRunnr/otp,jj1bdx/otp,mikpe/otp,kvakvs/otp,mikpe/otp,g-andrade/otp,g-andrade/otp,kvakvs/otp,lrascao/otp,erlang/otp,potatosalad/otp,dumbbell/otp,jj1bdx/otp,dumbbell/otp,vinoski/otp,getong/otp,isvilen/otp,emacsmirror/erlang,dgud/otp,getong/otp,electricimp/otp,potatosalad/otp,vinoski/otp,g-andrade/otp,dgud/otp,ferd/otp,ferd/otp,potatosalad/otp,aboroska/otp,mikpe/otp,vladdu/otp,aboroska/otp,dgud/otp,legoscia/otp,getong/otp,electricimp/otp,emacsmirror/erlang,dgud/otp,uabboli/otp,dgud/otp,g-andrade/otp,g-andrade/otp,RoadRunnr/otp,dumbbell/otp,RoadRunnr/otp,emacsmirror/erlang,getong/otp,rlipscombe/otp,jj1bdx/otp,aboroska/otp,potatosalad/otp,emacsmirror/erlang,jj1bdx/otp,jj1bdx/otp,vladdu/otp,vladdu/otp