downsample_immundata supports count-mode proportion downsampling

Expected `all(reps_na_counts == 0)` to be TRUE.
Differences:
`actual`:   FALSE
`expected`: TRUE 

context: downsample count proportion
annotation shape: 4x14
repertoire shape: 2x4
missing annotation columns: <none>
missing repertoire columns: <none>
annotation NA counts: imd_receptor_id=0, imd_repertoire_id=4, imd_count=4, imd_proportion=4, n_repertoires=0
repertoire NA counts: imd_repertoire_id=0, n_barcodes=0, n_receptors=2
unmatched repertoire ids: NA

annotations dump:
# A tibble: 4 x 14
  sample_id v_call j_call junction_aa clone_count filename           imd_barcode
* <chr>     <chr>  <chr>  <chr>             <dbl> <chr>                    <int>
1 S1        TRBV1  TRBJ1  AAAA                  8 "D:\\temp\\2026_0~           1
2 S1        TRBV2  TRBJ2  BBBB                  7 "D:\\temp\\2026_0~           2
3 S2        TRBV3  TRBJ1  CCCC                  6 "D:\\temp\\2026_0~           3
4 S2        TRBV4  TRBJ2  DDDD                  9 "D:\\temp\\2026_0~           4
# i 7 more variables: imd_chain_id <int>, imd_receptor_id <int>,
#   imd_n_chains <dbl>, imd_count <dbl>, imd_repertoire_id <int>,
#   imd_proportion <dbl>, n_repertoires <int>

repertoires dump:
# A tibble: 2 x 4
  imd_repertoire_id sample_id n_barcodes n_receptors
              <int> <chr>          <dbl>       <int>
1                 1 S1                15          NA
2                 2 S2                15          NA

Expected `nrow(unmatched_repertoire_ids)` to equal 0.
Differences:
  `actual`: 1.0
`expected`: 0.0

context: downsample count proportion
annotation shape: 4x14
repertoire shape: 2x4
missing annotation columns: <none>
missing repertoire columns: <none>
annotation NA counts: imd_receptor_id=0, imd_repertoire_id=4, imd_count=4, imd_proportion=4, n_repertoires=0
repertoire NA counts: imd_repertoire_id=0, n_barcodes=0, n_receptors=2
unmatched repertoire ids: NA

annotations dump:
# A tibble: 4 x 14
  sample_id v_call j_call junction_aa clone_count filename           imd_barcode
* <chr>     <chr>  <chr>  <chr>             <dbl> <chr>                    <int>
1 S1        TRBV1  TRBJ1  AAAA                  8 "D:\\temp\\2026_0~           1
2 S1        TRBV2  TRBJ2  BBBB                  7 "D:\\temp\\2026_0~           2
3 S2        TRBV3  TRBJ1  CCCC                  6 "D:\\temp\\2026_0~           3
4 S2        TRBV4  TRBJ2  DDDD                  9 "D:\\temp\\2026_0~           4
# i 7 more variables: imd_chain_id <int>, imd_receptor_id <int>,
#   imd_n_chains <dbl>, imd_count <dbl>, imd_repertoire_id <int>,
#   imd_proportion <dbl>, n_repertoires <int>

repertoires dump:
# A tibble: 2 x 4
  imd_repertoire_id sample_id n_barcodes n_receptors
              <int> <chr>          <dbl>       <int>
1                 1 S1                15          NA
2                 2 S2                15          NA