warmup_linear for BertAdam and OpenAIAdam
1. OpenAIAdam version of `warmup_linear` does not linearly increase lr, instead it looks like this:
![figure_1](https://user-images.githubusercontent.com/1732910/53427158-b26a0800-39e8-11e9-9f4e-5df1b9f64566.png)
This is different from BertAdam version of `warmup_linear`. Should they not be the same (Bert version)?

2. if `t_total` is specified incorrectly (too small), learning rate becomes negative after t_total for both versions. Probably it would be better to set lr to 0 to avoid situations like [Issue#297](https://github.com/huggingface/pytorch-pretrained-BERT/issues/297). Also, with a too small `t_total`, there is a drop in lr right after `warmup` is reached:
![figure_1](https://user-images.githubusercontent.com/1732910/53427736-c5c9a300-39e9-11e9-8f16-8160ac325490.png)

Let me know if I should PR a fix for both.


I just ran into this problem while running BERT on large samples from `run_squad.py`. I think a fix would be welcome because this is a really disturbing and hard to catch issue. 

It would probably be enough to move the optimizer creation + computing of `num_train_optimization_steps` inside the train loop.<|||||>Happy to welcome a PR on this indeed.
I'm not super fan of silently hide a wrong `t_total` by setting `lr` to zero so maybe sending a warning `logger. warning` at the same time would be nice too.<|||||>made a PR: https://github.com/huggingface/pytorch-pretrained-BERT/pull/327<|||||>Fixed in master now, thanks @lukovnikov!