Quality of life enhancements in encoding + patch MLM masking
This PR aims to add quality of life features to the encoding mechanism and patches an issue with the masked language modeling masking function.

1 - ~It introduces an `always_truncate` argument to the `encode` method.~ The `always_truncate` argument is now used as default, with no option to set it to `False` when a `max_length` is specified. Currently, if a `max_length` is specified to the `encode` method with a sequence pair, with both sequences being longer than the max length, then the sequence pair won't be truncated. This may then result in a sequence longer than the specified max length, which may crash the preprocessing mechanism (see current `run_glue.py` with the QNLI task). This argument may be further improved by truncating according to the pair of sequences length ratio.

2 - It adds a new return to the `encode_plus` return dictionary: `sequence_ids`. This is a list of numbers corresponding to the position of special/sequence ids. As an example:

```py
sequence = "This is a sequence"
input_ids_no_special = tok.encode(sequence) # [1188, 1110, 170, 4954]
input_ids = tok.encode(sequence, add_special_tokens=True) # [101, 1188, 1110, 170, 4954, 102]
# Special tokens ─────────────────────────────────────────────┴───────────────────────────┘
```

The new method offers several choices: single sequence (with or without special tokens), sequence pairs, and already existing special tokens:

```py
tok.get_sequence_ids(input_ids_no_special) # [0, 1, 1, 1, 1, 0]
tok.get_sequence_ids(input_ids, special_tokens_present=True) # [0, 1, 1, 1, 1, 0]
```

This offers several quality of life changes:
1 - The users are now aware of the location of the encoded sequences in their input ids: they can have custom truncating methods while leveraging model agnostic encoding
2 - Being aware of the location of special tokens is essential in the case of masked language modeling: we do not want to mask special tokens. An example of this is shown in the modified `run_lm_finetuning.py` script.

Considering sequence ids, the naming may not be optimal, therefore I'm especially open to propositions @thomwolf. Furthermore, I'm not sure it is necessary to consider the cases where no special tokens are currently in the sequence.
I think we should drop the `always_truncate` param, and just set it to `True` iff `max_length is not None`<|||||>Other than that I like it.<|||||>As seen with @julien-c , `always_truncate` really should be enabled by default when a `max_length` is specified.