GROOVY-6585: Implement customizable script body method signature for @BaseScript.

* Add helper method to ClassNode for safely removing a method.  Tidy up test.

* Fix tiny javadoc typos.

* Use ClassNode.findSAM to find the single abstract method.

* Replace fragile test for MethodNode.isScriptBody with a flag.

* Use AST node metadata to flag whether a method is a script body implementation.

* Fill in the Javadoc for setIsScriptBody().

* ClassHelper.findSAM will find methods in the parent, so we need to check for the name rather than null.

* Have a warning if run() is already implemented by base script.

* Ditch the warning since it is a little paranoid and so is more a linty sort of issue.

* Base scripts are not necessarily abstract.