This patch adds prof branch_weight as an optional parameter to add/remove and set successor methods.
This way preserves correctness of passes with respect to SwitchInst instructions' perf branch_weights metadata.
One of important assumption is that in a SwitchInst instruction we usually change its metadata first and then its cases. In add/remove methods the branch weights are not changed if their dimension is not equal to the number of successors because this means that the metadata has been changed by other means.
must be uint64_t