Make matrix assembly a user-facing operation

The user may call multiple par_loops to insert into the same matrix, and
will only want to actually assemble it after the last one has
completed.  Add a Mat.assemble() call which queues up (as a lazy
execution) the matrix assembly callback to allow this.
Add note on matrix assembly to concepts doc
Merge pull request #352 from OP2/matrix_assemble

User must now explicitly call Mat.assemble() after a par_loop before
looking at it.