Idomatic (hopefully) error handling.

Used Step interface with a Done() method to faciliate future half-done
for in previews. Seemed cleaner anyway.

type Step interface {
	Done() bool
	Image() image.Image
	Percent() int
}