Clean up: Pass File* to DexFileLoader instead of fd.

The DexFileLoader used to always close the fd, which led to
need to duplicate the fds using DupCloexec, or it was easy
to accidentally close the fd while it was still needed.

Make the DexFileLoader take File pointer, which moves the
lifetime management responsibilities to the caller.
The DexFileLoader never closes a file that it didn't open.

Test: ./art/test.py -b --host --64 --optimizing
Change-Id: Ie428edcae6c9062845c57c53528baee249046d70
12 files changed