[PP-1] Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests
### Overview
Two kernel test classes independently set up the same thing: a `JavaScriptComponent` fixture and a family of "prop-mutation" helpers that simulate a component evolving (adding/removing required and optional props, changing a prop's type, etc.).
- `TranslationPropagationTestBase` (added in #3591596) — its fixture plus `addOptionalProp()`, `addRequiredProp()`, `removeOptionalProp()`, `changePropType()`, `removeAndAddProp()`, `removeBothProps()`.
- `JsonSchemaPropsComponentInstanceUpdaterTest` — its own near-identical fixture plus `addOptionalProp()`, `addOptionalArrayProp()`, `removeOptionalProp()`, `removeRequiredProp()`, etc.
Because the fixture and helpers are defined twice, a change to the component shape or to how a prop mutation is expressed must be made in two places and can silently drift.
### Proposed resolution
Extract the shared `JavaScriptComponent` fixture and the prop-mutation helpers into a single shared trait (or base class) consumed by both test classes, reconciling the two helper sets into one canonical API (a superset of what each needs today).
### Remaining tasks
- Reconcile the two helper sets into one canonical API.
- Move the fixture + helpers into a shared trait/base.
- Update both test classes to use it and drop their local copies.
- Confirm both kernel test suites still pass.
### User interface changes
None — test infrastructure only.
---
The following discussion from !1271 should be addressed:
- [ ] @wimleers started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1267717):
> :thinking: This looks an _awful_ lot like what's in `\Drupal\Tests\canvas\Kernel\Plugin\Canvas\ComponentSource\JsonSchemaPropsComponentInstanceUpdaterTest`…
> Ideally we wouldn't duplicate all that. :fingers_crossed: But won't block commit on that.
Postponed on #3591596 landing first.
issue