Progress bar code simplification.
Is your feature request related to a problem? Please describe.
I think some of the code for the progress bar could be simplified.
The main issue is that the code is a little harder to read and maintain, so it is not a huge issue.
We have self.prog_bar which is the tqdm bar, and self.progress_bar which is the boolean value, which tells whether this bar should be enabled. Some examples of use in the code:
Line 444:
if self.progress_bar and self.prog_bar is not None:
    self.prog_bar.update(1)

If self.progress_bar is False, then why would self.prog_bar not be None?
Line 649:
# show progbar only on prog_rank 0
self.prog_bar = self.prog_bar and self.node_rank == 0 and gpu_nb == 0

In this line self.prog_bar takes on a boolean value. But that is what self.progress_bar was mean to be.
Describe the solution you'd like
I think a solution would be to adopt the style that self.prog_bar should be None in case it is not enabled. It should then also be renamed to self.progress_bar (Like in #119), such that we have only one variable instead of two.
I am not sure if this may mess with some of the distributed training code though.
Additional context
I think maybe the intention is that you should be able to toggle the progress bar between calls to trainer.fit. If this is a functionality we would like to retain, maybe progress_bar should be an argument to the trainer.fit call instead. So instead of having a trainer object with the self.progress_bar state, it may be more fitting to have it as part of the model fitting, which is an "atomic" function that blocks the program for a while.
The added benefit is that the number of arguments in Trainer.__init__ would be reduced.