Changed LayerState and LayerResult to be independent type families rather than associated type synonyms.

This is needed to support some edge cases, and also happens to make MonadTransControl more symmetric to MonadInnerControl.