Adding a RegEx tokenizers
# What does this PR do ?

This PR adds a regex tokenizer (currently required by MegaMolBART).

**Collection**: `nemo.collections.common.tokenizers`

# Changelog 
- `nemo/collections/common/tokenizers/regex_tokenizer.py`
- `tests/collections/nlp/test_regex_tokenizer.py`

# Usage

In order to build a regexp tokenizer model use the following command.
The script will create:
* `.vocab` file - with learned vocabulary
* `.model` file - with provided regex

To build vocabulary from text files:
```
python -- scripts/nlp_language_modeling/build_regex_tokenizer.py \
  --regex '\[[^\]]+]|Br?|Cl?|N|O|S|P|F|I|b|c|n|o|s|p|\(|\)|\.|=|#|-|\+|\\\\|\/|:|~|@|\?|>|\*|\$|\%[0-9]{2}|[0-9]' \
  --input_type text \
  --output_file regex_tokenizer -- \
  data_file1.txt data_file2.txt
```

To build vocabulary from CSV files ("smiles" column):
```
python -- scripts/nlp_language_modeling/build_regex_tokenizer.py \
  --regex '\[[^\]]+]|Br?|Cl?|N|O|S|P|F|I|b|c|n|o|s|p|\(|\)|\.|=|#|-|\+|\\\\|\/|:|~|@|\?|>|\*|\$|\%[0-9]{2}|[0-9]' \
  --input_type csv \
  --input_csv_col smiles \
  --output_file regex_tokenizer -- \
  data_file1.csv data_file2.csv
```