hide the flowDef to improve encapsulation and facilitate creation of flo...

...ws that do not have a flowDef such as riffle jobs

the current Job has too much of its guts accessed by other parts i think. i ran into this when trying to get a riffle based job going. riffle is a framework to run pretty much any class as a job using some simple annotations. we use it to run iterative map-reduce code and some other legacy code. but riffle has no flowDef.

i am not sure why buildFlow was final before, but obviously i am breaking that design here....

a subclass of Job can now override makeFlow, validate and clear to use something else than a flowDef.