Extract a few Priority-based helpers around MR jobs

Not sure how controversial these changes will be. It may be a little hard to see how I'm going to use these in rename until I create the PR later today. Let me know if you need to see it now.

/cc @etorreborre @markhibberd @raronson 
They come from me. I didn't know what the behavior was when there are optional fields in the thrift struct (like time) and one row sets it, but another doesn't. I think we looked into it and found libthrift was doing the right thing, and these aren't required.