* Add SetLayerPatternFunction:
	S:SetLayerPatternFunction('which_layer', func)
* Add SetLayerPatternBitmap:
	S:SetLayerPatternBitmap{
		Layer = 'whichlayer',
		Bitmap = 'bitmap.bmp',
		Format = 'BMP',
		ColorMap = {
			{{1,1,1}, 'Air'},
			{{0,0,0}, 'Silicon'}
		}
		-- Or instead of ColorMap, use ColorRange for smooth functions:
		ColorRange = {
			{'mat1', 'mat2'}, -- red component interpolates from first value to second
			{'mat3', 'mat4'} -- green component interpolates from first value to second
			}
		} -- up to n linear combinations depending on file format
	}
  * Separate function SetLayerPatternMap for table of values (must also support tensors)
  * Determine basic text format

* Add SetExcitationDipole
  * Test, update documentation

* Special case Hermitian matrices; keep track of Hermiticity of material epsilons.
  * Add zheev to RNP
  * Keep track of Hermiticity
    * Modification of materials could trigger a re-check
    * Certain formulations spoil this.
  * Maybe easier to add flag for manual specification of Hermiticity

* Add Scalapack support

* Debug GetLayerEnergyDensityIntegral, etc. for z-components

* Add Lua wrapper for HDF5.

* Use FFT to speed up field reconstruction.

* Optimize repeated solution in different layers to use known forward/backward sets and SolveInterior.
  * Solution cache needs to keep track of forward and backward amplitudes separately.

* Test subpixel convergence with increasing grid resolution.
