Design of Reversible Shift Registers Minimizing Number of Gates, Constant Inputs and Garbage Outputs