Lock

adds `.lock()` and `.unlock()`.

cc @calvinfo @gjohnson 
do we want to make this one accept a callback as well? I can't think of any races off the top of my head, are there any cases where we want to make sure the lock is released before continuing? I guess it's fronted by memory anyway so maybe it's not that big of a deal.