Fix student progress @sarina bug

@sarina please review and verify

added a bunch of defensive coding around whether or not location is a UsageKey or string and doing serialization as late as possible.