use e.printStackTrace() thruout to log Exceptions for clearer messages

Exception.getMessage() does not give much information, so replace with
Exception.printStackTrace().
add some buffering to speed up the hashing when making a repo

Reading from disk is usually best in 8k blocks, running the hash wants much
bigger chunks at a time:

https://stackoverflow.com/questions/1741545/java-calculate-sha-256-hash-of-large-file-efficiently?answertab=votes#tab-top
port to FDroid's current Apk class

* changes in Kerplapp's Apk class need to be folded into FDroid's
* FDroid's ValueObject is included only to support porting
purge apkSourcePath and apkSourceName from Kerplapp's Apk.java

These were not needed at all, so we should not introduce them.
rename Apk.file to Apk.installedFile for clarity

This File is referring to the installed .apk file on the device's local
filesystem, i.e. in /data/app
port to FDroid's current App class

No real changes needed, just removed the unneeded init stuff in App() and
included some code from FDroid's App.java to make future comparison easier.
a quick cosmetic sync to FDroid's Repo.java
purge NSD support, later add mDNS support to FDroid using jmdns

Android's NSD is a nice API, but it turns out its flaky and only supported
on very recent Android versions.  So we'll use jmdns to support older
releases and hopefully work better.

refs #2900, #2467 https://dev.guardianproject.info/issues/2900