Continuous masking of masked variables above 4KiB
## Release notes
{placeholder for release notes}
## Problem
In https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/2979, we introduced a fix for masked variables above 4KiB, but it involved sometimes tailing the end of the variable. We discovered this was not a breaking change, as the previous masking implementation would also occasionally reveal masked variables, but in full, at any length, based on how a log line could be split across multiple `Write()` calls non-deterministically.
## Proposal:
Remove the phrase transform and reliance on `text/transform` which has an internal 4 KiB buffer. Have an implementation that doesn't require a buffer, but instead counts how much of a phrase as been matched and act accordingly when it's either fully matched (write `[MASKED]`) or encounters a character that cannot be matched (write back all currently matched characters).
## Tasks
- [X] New masking solution: https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3482
- [x] Conduct regression testing
- [x] Conduct performance testing
issue