Efficient recurrent architectures through activity sparsity and sparse back-propagation through time