Reversible Computation Extending Horizons of Computing