Add optical medium

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

This may be thrown off if you do something like pass keywords `permittivity=2*e0, permeability=u0, n=1`. It may be best to have `permittivity` and `permeability` default values be `None`.