A common occurence is that not enough people volunteer for shifts at
first, and then the few volunteers take all the shifts (too many). Then
late comers aren't able to take any shifts.
This commit implements a third state for shift assignment: for sale. A
shift marked for sale means the team member is able to take the shift if
need be, but would rather someone else takes the shift. Another team
member will be able to take shifts at the same time even if the required
number of people are met.
The current semantics is for-sale shifts are replaced eagerly. Another
possible implementation would be to only replace for-sale shifts if the
number of required people is met.