Fix for logic error in adding permissions
Created by: kyanha
&= will remove every permission that's not in both sets, so will almost always end up removing all permissions if you're trying to add a single permission that's not already in the destination set.
|= will take everything that's in either or both of the source set and destination set and put it into the destination variable.
This commit changes one instance of &= to |=, in InternalAddPermission().