Change completion rate to work with flat data

- re implement based on flattened data structure
 - do this and explicily match on start date rather than relying on
   order we unflatten data in - concerned this would not match the order
   it comes from backdrop
 - branches for flat and unflat data remain - needs clearing up when we
   are happy with flat data working