Semantics of commit() changed: no "frozen" state

There is no longer an internal "frozen" state for ConvergentMatrix,
previously entered following commit(). This means the user can freely
continue to run updates without assertion failures, the idea being that
a matrix can be constructed in multiple phases (with commit() being
called after each).

If enabled at compile time, consistency checks will be run at each call
to commit(). The replicated update cache is no longer deleted on calls
to commit(), and is simply zeroed in reset().

Other changes:
- drain_task_queue() no longer needed to wrap upcxx::drain() (long
  overdue to be removed)
Bugfix: In-place reduction of replicated updates

In-place reduction of replicated updates lost the local update history,
this causing consistency checks on later commit() calls to fail.