Add optical medium

**To Do**:
- [x] Initialize medium with refractive index(Better API?)
- [x] Add tests for medium

I just wanted to give different names to different mediums. Is there any possibility of issues?