DisjunctiveConstraint fails in corner case
### System Info

```shell
- `transformers` version: 4.20.1
- Platform: Windows-10-10.0.19044-SP0
- Python version: 3.8.12
- Huggingface_hub version: 0.4.0
- PyTorch version (GPU?): 1.11.0 (True)
- Tensorflow version (GPU?): 2.8.0 (True)
- Flax version (CPU?/GPU?/TPU?): not installed (NA)
- Jax version: not installed
- JaxLib version: not installed
- Using GPU in script?: no
- Using distributed or parallel set-up in script?: no
```


### Who can help?

@patrickvonplaten

### Information

- [ ] The official example scripts
- [X] My own modified scripts

### Tasks

- [X] An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)
- [ ] My own task or dataset (give details below)

### Reproduction

The current **trie-only** implementation failed to handle the second corner case introduced in the  `Figure 1b` of [Improved Lexically Constrained Decoding for Translation and Monolingual Rewriting](https://aclanthology.org/N19-1090/),
where the prefix of one constraint is not prefix but subsequence of another.
The minimal code snippet to reproduce is following:
```python3
>>> import transformers
>>> c = transformers.ConstraintListState([transformers.DisjunctiveConstraint(
>>>     [[1, 2, 3, 4],
>>>         [2, 3, 5],
>>>            [3, 6],
>>>               [7]]
>>> )])
>>> c.reset([1, 2, 3, 5])
>>> print(c.completed)
False
>>> c.reset([1, 2, 3, 6])
>>> print(c.completed)
False
>>> c.reset([1, 2, 3, 7])
>>> print(c.completed)
False
>>> c.reset([1, 2, 3, 4])
>>> print(c.completed)
True
```

### Expected behavior

```shell
all print statements should output True instead.
The [`AC automaton`](https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm) is the desired algorithm to supersede Trie here.
I can prepare a PR to do the upgrade and fix if necessary.
```

Interesting edge case! @cwkeam has you encountered this before?<|||||>Hey @boy2000-007man,

Sorry to reply so late here. I'm a bit hesitant to add so much new code. Could you maybe show a case with input strings and generate and how the current implementation fails? E.g. above I see with some abstract numbers how it fails, but could you maybe also show how the current `generate(...)` method fails for an edge case?<|||||>This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.