Allow explicit block-passing to on_entry/on_exit

Due to Rubymotion adding support WeakRef, and weakly refed callables, not being able to mark
a callback as weak introduces subtle bugs and memory leaks if user references for example a delegate-object within a block. 

This allows a block to be marked as weak! and then passed as an argument.