How does Backpropagation Through Time (BPTT) help train recurrent neural networks? How does the process calculate and update model weights across multiple time steps? What challenges can developers face with vanishing gradients, exploding gradients, and long training sequences?