Use closures for monitor functions to ensure thread safety.
Add kind markers to Monitor type

This monitor handles from potentially being used in unsafe ways.
Ensure Monitor handles aren't stolen
Allow monitor getters to return from their closures
Merge pull request #129 from bjz/monitor-api

Use closures for monitor functions to ensure thread safety