Refactoring CLI to simplify and integrate with Spark model better

NOT READY FOR MERGE
+1!