SentencePiece support for NMT
This pull request **introduces 2 alerts** when merging 8d829d152d8410a49d235910aef490433478d3a9 into 39e2e4a86ec76fb96ac79e47b523e89b6bd3e7a0 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-b4d06bfdcdc04bba5c53e0dd570d5e155687daa4)

**new alerts:**

* 2 for Testing equality to None Also please add example usage to the README.  After discussion, default can be to drop special tokens, and asr can just use a constructor level flag to default to old behaviour as needed. 
Unblocked, address other reviewers and then ping me
This PR adds support for training (as well as providing pre-trained) SentencePiece tokenizer to the **MTEncDecModel**.

~~Minor changes in SentencePiece wrapper to retrieve _unk_id_ and remove _special_tokens_ at the time of "ID to Text" conversion.~~ Changes to the SentencePiece wrapper have been moved to a new, more generic PR #1973.


### SentencePiece for NMT Usage ### 
To use sentencepiece with MTEncDecModel, just set:

`model.encoder_tokenizer.library=sentencepiece` and
  `model.decoder_tokenizer.library=sentencepiece `

A pre-trained SentencePiece model can be provided using the:

`model.encoder_tokenizer.tokenizer_model` and `model.decoder_tokenizer.tokenizer_model` tags.

In case no pre-trained SentencePiece model is provided, it will be trained based on the configurations provided. 

The SentencePiece tokenizer can also be used for only the encoder while using a different tokenizer for the decoder, and vice versa. Similar mix-n-matches can also be done for training a tokenizer for encoder/decoder only (while providing a pre-trained version of the other) etc.