MDL-44725 Availability: Replace groupmembersonly - assign (10)

Updated code to restrict list of users. Also includes changes to
ensure that a cm_info object is available (required for availability
checks).

There is a tweak to upgradelib to reflect the different fields used.
(Note that upgradelib is not used during upgrade, but only when
converting assignments from the old assignment module.)
MDL-44725 Availability: Add SQL feature for user lists (11)

The previous API included a facility to filter a list of users
to include only those who are allowed to access an activity, i.e.
only people who belong to the required groups etc.

This change adds a new API function to return SQL that obtains
this list of users, so that it can be combined with other
queries.
MDL-44725 Availability: Replace groupmembersonly - workshop (12)

The availability restrictions that apply to user lists (group, grouping)
now apply in workshop:

* In user lists.
* When randomly allocating users (also now works as expected if you use
  group mode and a grouping with the activity).