WIP: implement group access enforcement in courseware

@andy-armstrong @cahrens 

@dmitchell @cpennington - FYI - some performance optimizations still being worked on in here, but would appreciate any feedback / guidance on the overall logic which isn't planned to change.
As we just discussed, we could short circuit this whole group access check if the course has no user partitions.