Get rid of get_drain_signal method on auto_drainer_t.

It actually made no sense since the only way the signal you got back
could get pulsed was if the auto_drainer_t was destroyed but that means
you're accessing an object that could be destroyed over the course of
the function.

Instead I threaded the interruptor through to the place where it was
needed. It actually only required threading it through a single layer.
Fix indentation of a method.
Remove some debugging structures.
No more erase_range_cb_t. It wasn't needed.
Remove some incorrect key twiddling for sindex_erase_range.
Destruct the sindex_write_token on throw in a safer fashion.

Now we don't catch the exception and destruct we just create a
destruction sentinal.
Guarantee that we don't pass an empty key range to erase_range.

It would have caused an incorrect behavior.
Switch the order we construct the destruction_sentinel_t in.

It's an error to destruct the sindex token after the txn. This way we
destruct it before.
Add more documentation to erase_range.