Debugging Memory Usage
Okay, figured it out. Thanks to batFINGER for the link to readfile.c

I thought I was deleting actions, but it turns out a few things in bpy_data shouldn't have been in there, and were causing errors that led to Actions NOT being deleted. Once I cut the bpy_data list down to what it is below, everything deleted properly and I am now left with about 10M of memory usage. Here is the working delete function:

def clearScene():  
   for i in range(20):
       bpy.data.scenes['Scene'].layers[i] = True  
   print("All layers selected")     
   bpy.ops.object.select_all(action='SELECT')
   print("All objects selected")
   bpy_data = [bpy.data.actions,
         bpy.data.armatures,
         bpy.data.brushes,
         bpy.data.cameras,
         bpy.data.materials,
         bpy.data.meshes,
         bpy.data.objects,
         bpy.data.shape_keys,
         bpy.data.textures]

   for bpy_data_iter in bpy_data:
      for data in bpy_data_iter:
          bpy_data_iter.remove(data)

   bpy.ops.wm.save_mainfile()