Various improvements

Hello Tim, 

I made some modifications to the code so that it uses the new type hints syntax. 
I also took the liberty to change the multimethod to a protocol, killed a reflection warning on the with-context macro and added some functions/flags from zguide.

(+ other minor stuff such as the readme update)

Max