Expose adb pull interface

@jryans 
Do you have time take a look?
The patch is finished yesterday and I have tested it this morning, pulling some normal files(pictures, videos, musics) from mobile to desktop, it seems work very well.
Why is a temporary array needed? Can we just put the data into `fileData` directly? (I am probably missing something...)