The Architecture of a Quantum Programming Environment