add trashPutFull, trashPut with a destructor parameter

trashPut uses eFree for destructing an item in a trash.
With trashPutFull, destructor for a newly put item can
be specified as a parameter.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
compare addresses when searching an item in trashTakeBack

In old code, strcmp is used for searching.
I cannot remember why I choose strcmp.
I guess that addresses comparing will be enough in most of
all cases.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
sql: fix memory leaks related to setjmp/longjmp

readToken frequently called in sql parser uses longjmp.  The control
jumps to the top level of sql parser.  As the result memory objects
allocated callers of readToken can be lost references.

With using trash, all memory objects are tracked.  They are freed in
trashMakeEmpty at the top level. So all deleteToken and vsringDelete
for memory objects traced by the trash are removed.

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