Performance improvements, #211.

There were three main performance areas addressed, listed below in decreasing
order of impact. For the home screen loading specifically, some rows that used
to take 2000ms to load now take more like 600ms. I'd love to see it lower, but
that's a pretty good improvement for an afternoon.

1) Registry reading. Keeping a cache of our registry keys to avoid reading values
from the registry directly makes a massive difference.

2) URL encoding. The global `HttpEncode` function we got from the SDK examples
creates and destroys an `roUrlTransfer` object every time. The escaping itself is
also not free, but using a single global object for the encoding leads to a nice
improvement. That's mostly from the image transcoding URL creation, since we have
to create the URL immediately.

3) Device info reading. We can read things like 5.1 support one time while the
app is loading instead of checking whenever we're curious.
Fix a crash playing theme music.