Use iife to avoid global scope, refactor app init.

Do away with the self = this dance except where necessary. Turns out
that to use prototypes with knockout you have to do ugly things with
function.bind, such as data-bind="$root.performLogin.bind($root)" in
the HTML.  So, I ended up sticking with the large number of recreated
instance methods.  In this case, there's really no harm, since the
constructor runs exactly once.