Installed libraries test for Embedded resource-adapter


1) ant all-ext
This test case tests installed libraries support (EXTENSION_LIST specified in MANIFEST.MF) 
of a resource-adapter.

jdbc.jar is the extension which will be copied to applibs.
jdbcra.rar (all other generated rars) will have jdbc.jar's extension-name (jdbc)
in its EXTENSION_LIST so that it will be available at runtime.


2) ant all
This test case tests installed libraries support (specified via deploy --libraries <lib> <EAR>) 
of a resource-adapter by specyfing --libraries during deployment of .ear

jdbc.jar is the library which will be copied to applibs.
As the .ear is deployed with --libraries option, library (jdbc.jar) should be available at runtime for all modules of .ear (including .rar that
is being tested here)
