APIv4 - Limited support for casting
Before
------
* `setCheckPermissions(0)` casts the `0` to `false`.
* This is because it's a concrete setter with explict typing.
* `setUseTrash(0)` does not.
* This is because it's a magic setter with no typing.
After
-----
* Both `setCheckPermissions(0)` and `setUseTrash(0)` cast the `0` to `false`
Technical Details
-----------------
I initially drafted in a way where `setUseTrash()` performed exactly the same casting
as `setCheckPermissions()`, but there was a countervailing test to assert that
`setDebug('debug')` is invalid, and that seemed fair.