added doc for with, opaque types, as unsafely_as functions, shared_typedefs mostly based on madis's e-mails