Add optical medium

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

You could do something like `abs(n - c * sqrt(permittivity*permeability)) > 1e-8` (I'm not sure what is a good value for the bounds check there).