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.
Associating an XBlock with a specific workgroup wouldn't work, as we do want to show the content on a given XBlock according to the workgroup he is in. Which wouldn't work if he is in several groups at the same time, agreed.

It actually raises the question of how this is handled by the group project XBlock actually. @martynjames since a user can be in several workgroups at once within a course, how is the group project XBlock chosing what group to present in that case?