Infinite Loop Caused by Controller Action in Lightning Component
I found the solution. DO NOT GIVE YOUR JAVASCRIPT METHOD AND YOUR APEX CONTROLLER METHOD THE SAME NAME. When I defined the saveAction:
var saveAction = component.get("c.saveAccount");
the saveAction was set as the js controller's saveAccount method, and not my Apex controller's saveAccount method. I assumed that anytime we referenced "c.methodName" from the js controller we were referencing the Apex method - that's not the case and this seems pretty buggy to me.
Probably should be added as a best practice or perhaps a known issue somewhere.
I changed the js method name to "saveAcct" and everything works now.