Recurrent Neural Networks: From Simple to Gated Architectures