move signal registration/de-registration to decorator scope

Currently importing `contexttimer.timeout` will register a signal handler for `signal.SIGALRM`, blowing away any previously registered signal handlers for `SIGALRM`. Registering in decorator scope, and de-registering it in the finally block removes this import side-effect, and protects `@timeout` calls from similar side-effects should another package choose to register a `SIGALRM` handler after `contexttimer.timeout` is imported.