Refactoring CLI to simplify and integrate with Spark model better

NOT READY FOR MERGE
I suppose, but I think it's fine to leave here; @massie @jey, any comments?