Does Batch Normalization Introduce non linearity into the Neural Network? Does Batch Normalization help the network in any way other than keeping the weights alive?  
 A: 
Does Batch Normalization Introduce non linearity into the Neural
  Network?

Well $f(\{x\}) = \frac{\{x\}-\mu(\{x\})}{std{(\{x\})}}$ is definitely not a linear function.

Does Batch Normalization help the network in any way other than
  keeping the weights alive?

I think you probably mean that it keeps the gradients alive, not the weights. The answer to this is yes, it also acts as regularization.
A: TL;DR
During training - BN is non-linear.
At inference time - BN is linear.
Details:
As @shimao mentioned, the batch normalization forms a non-linear function. The first part:
$$\hat{x}=\frac{x-\mu_\mathcal{B}}{\sqrt{\sigma^2_{\mathcal{B}}-\epsilon{}}}$$
Is non-linear since $\mu_{\mathcal{B}}$ and $\sigma_{\mathcal{B}}$ both depend on the $x$'s in the current mini-batch.
That is true during training since we normalize with the mean and standard deviation of each batch. However, at inference time, the normalization is performed using the population mean and standard deviation.
As described in the original paper in Section 3.1: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

Once the network has been trained, we use the normalization ing the population, rather than mini-batch, statistics.

This means, the mean and std will be constant during the computation and the above formula will become linear. Having that, during inference one can compose the normalization transform with the linear $\gamma{}\hat{x}+\beta{}$ transform to a single linear transformation. As written in the paper:

Since the means and variances are fixed during inference, the normalization is simply a linear transform applied to each activation. It may further be composed with the scaling by $\gamma{}$ and shift by $\beta{}$, to yield a single linear transform that replaces $\text{BN}(x)$.

