more matching fixes

- prevent saving invalid matches
- prevent sending assignments when some users are unassigned
- handle weird situation where assignment-generating or pm-generating dies midstream and allow regenerating matches
whoops
added tests for new matching improvements
more test fixes and fixing handling of assignments with pinch hitters
duh

left in binding.pry :P
Merge pull request #1584 from shalott/match_fixes

Matching fixes (issue 3947)