Added save_records to push monitor function and updated implementation of RNNs

Added save_records to push monitor function:
Initialize {batch, val, example, epoch, time} records of new monitor channels with those of old monitor channels in order to preserve and pass the training information, when re-training from the checkpoint. Now, it can be much easier to plot the whole curves. A user can use this functionality by setting save_records flag of push_monitor function into 1. 

Updated implementation of RNNs:
1. One could choose to use or not use the masks.
2. LSTM implementation has changed
3. included add_noise function which adds Gaussian noise to parameters
4. Recurrent weights are always orthogonally initialized using scipy.linalg.orth()


Doesn't this change the current behaviour? In that case, shouldn't this be inside the `if` block of line 1162?