Change ThrowIfAfterCode to BehaviourAfterCode on DirectiveLineProcessor to give implementers choice of how to handle directives used after code
Switch to custom exception InvalidDirectiveUseException for Throw behaviour in DirectiveLineProcessor