ziafazal/api-fix-bug-progress-tab: fix progress

@mattdrayer @martynjames @dsego 
1) Fixed progress value by using total modules in the course as denominator. 
2) Changed completion avg to percentage. We have to change it on apros accordingly
3) Fixed bug in serialiser which was causing multiple calls to `auth_user` in CourseModuleCompletionList as reported by @chrisndodge  
traversals across get_children() is - unfortunately very, very non-performant in Open edX as it has to load the entire courseware. This can take 500ms or more. This might be worth a specialized MongoDB query (in common/lib/xmodule/xmodule/...)  if you just want to get a number of possible items at the outer leaf nodes.

I can forward some possible suggestions when I get a spare chance during vacation. Otherwise, we might be able to ask a favor of Don Mitchell to craft a MongoDB query.

Which leads me back to my above comment. Can we peel off that auth_user optimization from the rest of this PR as I think we still need some work here.