feat(sema): implement explicit conversions for fixed-size byte arrays
Add explicit type conversion support for:
- FixedBytes to FixedBytes (any size)
- FixedBytes to UInt (same size only)
- UInt to FixedBytes (same size only)
Signed integers are not allowed per Solidity spec.
Closes #612
feat(sema): implement array slice implicit conversion
Add implicit type conversion for array slices to their underlying array type.
Slices can now convert to:
- The exact underlying type (e.g., `uint256[] calldata slice` → `uint256[] calldata`)
- Memory arrays of the same element type (e.g., `uint256[] calldata slice` → `uint256[] memory`)
Also fixes `is_sliceable()` to peel refs so reference types like `uint256[] calldata` are correctly recognized as sliceable.
Closes #621
See: https://docs.soliditylang.org/en/latest/types.html#array-slices