Doing the `isModified()` check inside the `getScriptAsString()` will cause an issue with `GroovyScriptFactory` (or with new `GroovyScriptExecutor` - #915).
They call `isModified()` first.
Calling `getScriptAsString()` after that won't matter - we always get old scipt string.
I suppose we can do here the same (`GroovyScriptExecutor`), but around **String script**.

And right: there won't be a reason to have `FactoryBean` complexity.

If you don't mind I go ahead and push it.