move repo into standard user repo path: /fdroid/repo

refs #2685
Adding styling to the Kerplapp bootstrap index page.

Further refinement for #2668 A first pass at adding some styling to the Kerplapp
bootstrap index page to make it a little bit easier on the eyes. Thanks to @doeg
for expert design advice.
better debug messages from doSymLink()
delete fdroid.client.apk symlink before copy to make sure its updated

If fdroid.client.apk is present, then the symlink fails, and it does not
get updated.
add current IP/URL to the repo metadata

This sets the metadata in the index.xml, including the URL and categories.
include the repo fingerprint in the repo URLs #2613

This takes the code from FDroid for calculating the fingerprint of the repo
signing key. Once this code is included in FDroid, it should use FDroid's
own DB.calcFingerprint() to replace KerplappKeyStore.getFingerprint().

This relies on this merge request being included in fdroidclient:
https://gitorious.org/f-droid/fdroidclient/merge_requests/45
show the fingerprint on the bootstrap screen  #2454
set repo URL to UPPERCASE for a more compact QR Code

This relies on things being included in fdroidclient.git, see #2685
refresh IP and repo URL when changing HTTPS pref or repo setup

#2580
Added a Subject Alternative Name w/ local IP to https cert.

The default StrictHostnameVerifier used by the SSL stack on Android/Java does
not accept certificates with the CN field equal to an IP addres, complaining
about hostname validation failing. This happens regardless of the TrustManager
implementation, so even using MemorizingTrustManager or
AndroidPinningTrustManager does not solve the problem. Adding a X509 extension
specifying the IP address as a Subject Alternative name of type IP is enough to
make the default StrictHostnameVerifier implementation happy. This avoids us
having to hack about with an overloaded implementation that may be unsafe. As
good a compromise as any!
Implement a custom KeyManager to force an SSLContext to always use the HTTPS key alias.

Kerplapp has one keypair and two certificates in its keystore. The first
certificate is generated on first run and is used for signing the index.jar. The
second certificate is regenerated as required and contains the current IP used
for the HTTPS server. This certificate must be regenerated whenever the IP
changes. Using the default KeyManager is unreliable: it sometimes uses the
index.jar certificate and not the https certificate. In order to force the use
of the HTTPS certificate we provide a wrapped KeyManager that forces the right
alias to be used. Convoluted, but the only apparent solution outside of
managing two entirely separate keystores with two copies of the private key
and only one certificate per keystore.

This should be the last requirement for issue #2669
Provide KeyManagers to HTTPD directly instead of using the KeyManagerFactory.

The KerplappKeyStore now provides a wrapped KeyManager that should be used
instead of a vanilla KeyManagerFactory. We use the new NanoHTTPD method to
accept direct KeyManagers instead of letting it collect its own from
a KeyManagerFactory instance.
Updating to latest NanoHTTPD to improve SSL support
Adding max age property to Kerplapp repo index metadata.

In order to help address the "freeze attack" identified in the Fdroid
audit support has been added to the fdroid-client & server for a 'max
age' property
(https://gitorious.org/f-droid/fdroidclient/commit/d21788569fe9e38f7ac6c4f2e1a2a42bbc3daa0e).
Presently the fdroid client does not enforce this max age, but we should
add it to our repo index for future support.

A preference screen entry was added to allow manipulation of the max age
timeout. It has been set to the same default value as the official
FDroid repo's maxage property (14 days).

refs #2667
Remember local repo setup for App select activity.

Kerplapp should pre-select applications on the repo app select activity
that have been previously added to the repo. This is accomplished by
modifying the AppListLoader to set the loaded AppEntry to 'enabled' when
there is a corresponding APK file in the repo directory from a previous
setup.

This patch addresses bug #2469 - 'remember local repo setup'.
run Eclipse code formatter in Android config