Handle and Manager implementation

This is not ready to be merged. The PR is created to serve for ongoing review.

First commit is just the original prototype with items renamed.

@kvark how do I make those wonderful check lists?
@bjz can answer more definitely, but I've been waiting for Rust devs to change the drop semantics to pass self *by move* for ages! And they still haven't done that. Since the object is destroyed, and `drop()` is responsible for it, `drop` should be the owner, not the borrower.