Re-implement ufl_cell

Also ensure that _ufl_cell is never read from except in ufl_cell().