Update groups/groups.class.php

bp_groups_setup_nav action is part of the default theme I suspect as it's not present on my install of 1.6.4 and we don't use the default theme.
changing it to bp_init did the trick, so I'm offering it up as a change. Without it, it would just 404.

Thanks!
Temporarily disabling non-course modules

This lets me focus on just the Course-related changes without having to be distracted by unresolved issues in other parts of the plugin
Adding bpsp_require_buddypress filter to allow running BPSP without BuddyPress

Setting the filter to false will allow the plugin to be activated without complaining that BuddyPress isn't activated, and can be used for other similiar checks in the future
Hooking bpsp_init() to init instead of bp_init

This will run at the exact same time as bp_init, but will fire when BuddyPress is installed and when it isn't
Adding mock BuddyPress objects and functions

These simulate the existance of BuddyPress for places in the BPSP code that expects certain BP objects/functions to exist
Adding standalone_screen_handler to control Courses view when BuddyPress not activated
Allow courses post type to be access directly from the front end
Adding bp->groups->current_group to mock bp properties
Adding check so is_course returns true when viewing single course post directly

The call to bp_get_group_permalink() was moved because it's only used inside the if ( !empty( course[0] ) ) check, and calling it earlier leads to an undefined function error when BuddyPress is not activated
Short circuiting profile field registration if BuddyPress not activated
Setting empty groups array when BuddyPress is not activated
Adding mock bp_core_admin_hook()
Updating file description
Removing trailing whitespace after closing PHP tag

Otherwise it causes "headers already sent" warnings
Merge remote-tracking branch 'origin/bp_not_required' into bp_not_required
Checking if _GET['action'] exists before trying to access it
Adding bp_core_get_userlink stub
De-registering and re-registering hook callback to avoid infinite loop
Checking if variables exist before referencing them
Flushing rewrite rules on plugin activation and deactivation

Otherwise the post types couldn't be accessed directly until some other action flushed the rules