λλ: A Programming Language for Silicon Photonics