Modified cohorts module to support the new workgroup type

This PR contains the addition of a new cohort type: workgroup. This type can be used to create various cohorts. To give you more context, this is used to create group projects between students, so they can also have a private/cohorted discussion in the unit.  Some detials:

* The current behavior of edx cohorts has not changed. It remains the same as before. All functions are using the CourseUserGroup.COHORT type as default.
* If we want to interact with a different type of cohort, we need to specify it with group_type=CourseUserGroup.WORKGROUP with the needed function.
* A user can now be in multiple cohort, ONLY if we specified it explicitly with the allow_multiple parameter of the add_user_to_cohort function. This shouldn't be used with the normal COHORT type, but might be for other types.
* The get_cohort() behave the same as before and will return only one user cohort. If you need to get multiple cohorts, you have to use this function with allow_multiple=True.
* In get_cohort(), auto_cohort is only supported for normal course cohort. (type COHORT).
* A new function is available: remove_user_from_cohort(), which is also used in views.py 
* We can use the type CourseUserGroup.ANY where appropriate to get cohorts of all types and not only from a specific type.

cc @antoviaque @jimabramson @gwprice @chrisndodge 

Let me know if you have any comments.
Actually, now I'm concerned about this - til now if a normal discussion user belongs to a group and creates a thread in a grouped (cohorted) commentable, we can automatically assign it.  If a user is now in multiple groups (of whatever type), how are we going to decide which group a newly-created thread should be linked to?