make trashBoxPut return item given as an argument

trashBoxPut returned nothing.
With this fix you can write allocating an object and putting
it to trash in single statement like:

   item = trashBoxPut(trash, object_new(), object_free);

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
break the loop if a parser returns normally

In commit be4a2117494ce73750cec3fd3c7cb4a60e722bcf, setjmp
invocation is lifted up to parser common code. In the commit
I introduced two bugs. This patch fixes the first of two.

Bug: though a parser doesn't invoke longjmp and returns normally, the
parser is called repeatedly in a loop.

This patch adds "break" keyword after returning from a parser.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
run parser main function of vhdl and sql in infinite loop

In commit be4a2117494ce73750cec3fd3c7cb4a60e722bcf I introduced two
bugs. This patch fixes the second of two.

In the commit, I lifted up the loop arond setjmp in each parser to
parser common part. To handling setjmp/longjmp, this loop is needed in
the parser common part. However, the loop is still needed in each
parser, too. I missed this necessity.

In this commit, infinite loops are put to vhdl and sql parsers.
Both parser uses longjmp to break the loop.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
apply new interface (parser_with_gc) to fortran.c

TrashBox, passed as part of the new interface, is used in fortran.c
However, jmp_buf is not used; preparing jmp_buf in upper layer is not
suitable for fortran.c

Signed-off-by: Masatake YAMATO <yamato@redhat.com>