reimplementation of extends<>, version of pass_through_compiler that doesn't crash gcc, lighter weight make_expr and unpack_expr