function.lisp: Move some operation to build time

Move return value translator creating.
function.lisp: Add return value clear support

Based on whether caller owns the return value.
function.lisp: Use with-foreign-objects to manage giargs
function.lisp: Add garbage collection support for "out" object

Return value or out argument.
Merge pull request #29 from hying-caritas/return-proc

Return value clear and GC