`Signer._deriveRentalOrderHash` and `Signer._deriveOrderMetadataHash` functions miss encoded values for certain variables, which make them not compliant with EIP-712
Audit: 2024-01-renft-findings
Severity: HIGH

# Lines of code

https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/packages/Signer.sol#L44-L65
https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/packages/Signer.sol#L339-L408
https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/packages/Signer.sol#L162-L195
https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/packages/Signer.sol#L218-L239
https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/policies/Create.sol#L626-L639


# Vulnerability details

## Impact
The encoded data returned by the `Signer._deriveRentalOrderHash` and `Signer._deriveOrderMetadataHash` functions miss encoded values for certain variables, which make them not compliant with EIP-712. Users, who follow EIP-712, can face difficulties when using this protocol. For instance, a lender, who provides an EIP-712 compliant `zoneHash` for creating a rental order, can never have such order be fulfilled.

## Proof of Concept
As shown by the `Signer.constructor` and `Signer._deriveRentalTypehashes` functions below, `_RENTAL_ORDER_TYPEHASH` contains the encoded type for `address rentalWallet`, and `_ORDER_METADATA_TYPEHASH` includes the encoded types for `uint8 orderType` and `bytes emittedExtraData`.

https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/packages/Signer.sol#L44-L65
```solidity
    constructor() {
        ...
        // Derive name and version hashes alongside required EIP-712 typehashes.
        (
            _ITEM_TYPEHASH,
            _HOOK_TYPEHASH,
            _RENTAL_ORDER_TYPEHASH,
            _ORDER_FULFILLMENT_TYPEHASH,
            _ORDER_METADATA_TYPEHASH,
            _RENT_PAYLOAD_TYPEHASH
        ) = _deriveRentalTypehashes();

        ...
    }
```

https://github.com/re-nft/smart-contracts/blob/cbf5ff74e40576be72090afd99bf6f0c366bd315/src/packages/Signer.sol#L339-L408
```solidity
    function _deriveRentalTypehashes()
        internal
        pure
        returns (
            bytes32 itemTypeHash,
            bytes32 hookTypeHash,
            bytes32 rentalOrderTypeHash,
            bytes32 orderFulfillmentTypeHash,
            bytes32 orderMetadataTypeHash,
            bytes32 rentPayloadTypeHash
        )
    {
        ...

        // Construct the RentalOrder type string.
        bytes memory rentalOrderTypeString = abi.encodePacked(
            "RentalOrder(bytes32 seaportOrderHash,Item[] items,Hook[] hooks,uint8 orderType,address lender,address renter,address rentalWallet,uint256 startTimestamp,uint256 endTimestamp)"
        );

        ...

        // Derive the RentalOrder type hash using the corresponding type string.
        rentalOrderTypeHash = keccak256(
            abi.encode(rentalOrderTypeString, hookTypeString, itemTypeString)
        );

        {
            ...

            // Construct the OrderMetadata ty