Balaji,
in your SaveAcmeModelFeature, you should do this:
final IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
final ExportMarshallerRunnable runnable = new ExportMarshallerRunnable(getDiagram(), "AcmeMarshallerName");
progressService.busyCursorWhile(runnable);
Where "AcmeMarshallerName" is the value you return in the getMarshallerName() method of your own marshaller. These must match exactly and should not be the same as the BPMN marshaller's name.
2. No, that's not possible. All CustomServiceTasks are ServiceTasks, period. You cannot expose manual task properties there. If you want to set properties you would otherwise set on a manual task, you can only use the types from the PropertyType class to mimic their behavior.
Do you mean indenting the XML? AFAIK, you can't easily create an indented XML with a stream writer, without using one of the wrapper classes available in some third party libs. If you instead use XSLT in your marshaller, you could do that.