Implement basic EditLayout and its friends.

EditLayout supports custom font substitution (which isn't
supported by DWrite's TextLayout) and free style layout (if
someone implement custom EditLayoutSource.)