Moving up to the base class
Lifted up a convenience method
sometimes an error is reported as RuntimeException when the persistence fails

java.lang.NullPointerException
	at org.jenkinsci.plugins.workflow.pickles.PickleFactory.all(PickleFactory.java:43)
	at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter$1.writeReplace(RiverWriter.java:110)
	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:193)
	at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
	at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
	at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:128)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:319)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:302)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:276)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$000(CpsThreadGroup.java:66)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:166)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:164)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)
Caused by: an exception which occurred:
	in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@8d68fa3
removed a pointless function
Added a test of the error recovery path when the persistence failed
implemented error propagation pass in case the workflow persistence fails.

The running program will be interrupted with the problem, which gives it a chance to recover.
Fixed persistence
Improving test robustness

"waitForWorkflowToSuspend()" now don't include listener callbacks and head updates in it, so calling it just once has all sorts of race conditions
More test improvements.

waitForSuspend() can see the persistence failure, which it should ignore.
Demo script now lives in demo/config.xml.
Still struggling with the race condition problem
Merge branch 'master' of github.com:jenkinsci/workflow-plugin

Conflicts:
	cps/src/main/java/org/jenkinsci/plugins/workflow/cps/DSL.java
	step-api/src/main/java/org/jenkinsci/plugins/workflow/steps/AbstractStepDescriptorImpl.java
	step-api/src/main/java/org/jenkinsci/plugins/workflow/steps/AbstractStepImpl.java
	step-api/src/main/java/org/jenkinsci/plugins/workflow/steps/AbstractSynchronousStepImpl.java
Merge tag 'changes/240' into StepExecution

Conflicts:
	step-api/src/main/java/org/jenkinsci/plugins/workflow/steps/AbstractStepDescriptorImpl.java
	step-api/src/main/java/org/jenkinsci/plugins/workflow/steps/AbstractStepImpl.java