Additional tests: missing hold(), release().

The 'release-missing.c' test currently FAILS: we don't detect the missing release()!
Provide a separate "failed to match" error.

There are two possible error conditions in tesla_update_state():
1. an instance can't take one of the expected transitions or
2. no instance can be found to match the given key.

This commit provides an explicit error handling path (tesla_match_fail) for the second of these possibilities. This fixes the logic of tesla_update_state() and is verified by new tests!

We do lose a tiny bit of debug output, but that's a small price to pay for correctness. :)