Reversible Logic Synthesis Methodologies with Application to Quantum Computing