android: use a file-backed socket

Using a file backed socket (as opposed to one in the abstract namespace) lets us easily control the access permissions. I also significantly cleaned up the code to make it more readable.
android: pass our linux uid to the GUI Activity

so it knows which socket to connect to