Proof of concept for locking cells via metadata

At the dev meeting a couple weeks ago we talked a little about the possibility of having "locked" cells: i.e., cells that can be edited, but not deleted. I imagine this will need discussion and maybe is out of scope, but I thought I would put together a quick proof-of-concept to see how it would work. All that is required is to have `"locked": true` in the cell's metadata, and then the cell will be un-deletable.

This is only as a measure to prevent accidental deletion of cells -- it is not meant to make a notebook read-only, as someone could just go edit the metadata and remove the "locked" attribute. 

Probably if this is accepted, there should be additionally a visual indicator that the cell is locked (perhaps a lock icon, or something?) -- otherwise it just seems like delete isn't working.
Otherwise when the cell is copied, the old cell and the new cell share the same metadata *object*. Then if you remove the `deletable` key from the new cell, it also removes it from the old cell. So the metadata needs to be deep copied; this is how the internet told me to do it (but I'd love to know if there's a better way since this seems kind of hacky).