when using fee-on-transfer tokens in VaultV3, capacity is limited below underlyingCap
Vault V3 documentation states it accounts properly for fee-on-transfer tokens. It calculates actual transferred amount as below:\\n```\\n      uint256 _pool = balance();\\n           if (_pool + _amount > underlyingCap) {\\n      revert NYProfitTakingVault__UnderlyingCapReached(underlyingCap);\\n            }\\n      uint256 _before = underlying.balanceOf(address(this));\\n            underlying.safeTransferFrom(msg.sender, address(this), _amount);\\n               uint256 _after = underlying.balanceOf(address(this));\\n                   _amount = _after - _before;\\n```\\n\\nA small issue is that underlyingCap is compared to the _amount before correction for actual transferred amount. Therefore, it cannot actually be reached, and limits the maximum capacity of the vault to underlyingCap minus a factor of the fee %.
Move the underlyingCap check to below the effective _amount calculation
```\\n      uint256 _pool = balance();\\n           if (_pool + _amount > underlyingCap) {\\n      revert NYProfitTakingVault__UnderlyingCapReached(underlyingCap);\\n            }\\n      uint256 _before = underlying.balanceOf(address(this));\\n            underlying.safeTransferFrom(msg.sender, address(this), _amount);\\n               uint256 _after = underlying.balanceOf(address(this));\\n                   _amount = _after - _before;\\n```\\n