New Handle manager

This implements a new Handle manager, adds ref-counting to kernel objects and implements `DuplicateHandle`. Note that support for `DuplicateHandle` is still fragile, because the rest of the kernel doesn't expects object to be able to have multiple handles pointing to them. Regardless, it seems to work OK on what I tested so far. I plan to fix this next, but decided it would be good to submit PRs more often to reduce rebase pain and reduce review sizes.
For reasons similar to the ones explained in `m_port_map` comment below, the kernel doesn't keep track of object lifetimes correctly just yet, so implementing `CloseHandle` would cause objects to be prematurely destroyed. (Recall our discussion on IRC about services returning handles, for example.)