Implement key expiration via individual setTimeouts and remove expire

I noticed there was a bug in the expire loop interval, which was mirrored in the tests (which is why they were passing).

1s was specified as 100ms, when it should be 1000.

Instead of just fixing that, I swapped in something that should be significantly more accurate when expiring keys.  I also fixed the tests.