Wrong validation in `DefaultUndelegationPolicy.onUndelegate()`
In `onUndelegate()`, it checks if the operator owner still holds at least `minimumSelfDelegationFraction` of total supply.\\n```\\n   function onUndelegate(address delegator, uint amount) external {\\n       // limitation only applies to the operator, others can always undelegate\\n       if (delegator != owner) { return; }\\n\\n       uint actualAmount = amount < balanceOf(owner) ? amount : balanceOf(owner); //@audit amount:DATA, balanceOf:Operator\\n       uint balanceAfter = balanceOf(owner) - actualAmount;\\n       uint totalSupplyAfter = totalSupply() - actualAmount;\\n       require(1 ether * balanceAfter >= totalSupplyAfter * streamrConfig.minimumSelfDelegationFraction(), "error_selfDelegationTooLow");\\n   }\\n```\\n\\nBut `amount` means the DATA token `amount` and `balanceOf(owner)` indicates the `Operator` token balance and it's impossible to compare them directly.
`onUndelegate()` should compare amounts after converting to the same token.
The operator owner wouldn't be able to undelegate because `onUndelegate()` works unexpectedly.
```\\n   function onUndelegate(address delegator, uint amount) external {\\n       // limitation only applies to the operator, others can always undelegate\\n       if (delegator != owner) { return; }\\n\\n       uint actualAmount = amount < balanceOf(owner) ? amount : balanceOf(owner); //@audit amount:DATA, balanceOf:Operator\\n       uint balanceAfter = balanceOf(owner) - actualAmount;\\n       uint totalSupplyAfter = totalSupply() - actualAmount;\\n       require(1 ether * balanceAfter >= totalSupplyAfter * streamrConfig.minimumSelfDelegationFraction(), "error_selfDelegationTooLow");\\n   }\\n```\\n