Lock.release(): reorder code to avoid token overwrite

the recent lock rewrite reintroduced a data stomp bug similar to the one fixed in #384.  this change should patch the problem for locks that do not have timeouts, which is the same behavior the library had pre-rewrite.  [here is a gist demonstrating the issue.](https://gist.github.com/chillipino/fd8992c770ecdb1934db)  before applying this change, i was able to get double-release exceptions about 50% of the time on a linux VM with a sleepTime of 0.15s, and 100% of the time on windows with a sleepTime of 0.1s.  i did all of the above tests with python 2.7.5.

unfortunately, the bug described in #416 is still present, which is closely related to this code.  i'll open a separate issue for that.