MRG: Acquire locks while cleaning up stale ones

This fixes #328

For example:

```python
import os
import sys
import ctypes

from rootpy.utils.lock import lock
from rootpy.extern.lockfile import LockFile

pid = os.fork()
if pid == 0:
    # this is in the child process
    # create a stale lock by segfaulting
    with LockFile('./lock'):
        print "child acquired lock"
        ctypes.cast(-1, ctypes.POINTER(ctypes.c_int))[0]
    sys.exit(0)
# in the parent process
# the child should never reach here
os.wait()

with lock('./lock', poll_interval=5, max_age=20):
    print "parent acquired lock"
```

Run like so:

```
DEBUG=1 python test_lockfile.py
```

```
DEBUG:rootpy] Using ROOT 5.34/07
child acquired lock
ERROR:ROOT.TUnixSystem.DispatchSignals] segmentation violation
ERROR:stack] File "test_lockfile.py", line 14, in <module>
ERROR:stack]   ctypes.cast(-1, ctypes.POINTER(ctypes.c_int))[0]

[snip]

DEBUG:rootpy.utils.lock] 15694@silas attempting to lock ./lock
DEBUG:rootpy.utils.lock] 15694@silas waiting for 5 seconds for lock at ./lock to become available
DEBUG:rootpy.utils.lock] 15694@silas waiting for 5 seconds for lock at ./lock to become available
DEBUG:rootpy.utils.lock] 15694@silas waiting for 5 seconds for lock at ./lock to become available
DEBUG:rootpy.utils.lock] 15694@silas waiting for 5 seconds for lock at ./lock to become available
DEBUG:rootpy.utils.lock] 15694@silas breaking lock at ./lock that is 21 seconds old
DEBUG:rootpy.utils.lock] 15694@silas waiting for 5 seconds for lock at ./lock to become available
DEBUG:rootpy.utils.lock] 15694@silas locked ./lock
parent acquired lock
DEBUG:rootpy.utils.lock] 15694@silas released lock at ./lock
```