integrate knockout for cleaner data/dom binding

fairly large rewrite of the existing front end. selected knockout because
it was fairly small in scope and does just enough for what we need to keep
things clean on the front end.

we store the entire knockout session to localStorage so that a session can
be pulled right from the browser's local cache. this should also set things
up nicely to work offline in the future.
feature expansion

pull down saved projects
create new projects
clean up knockout stuff
link up the editor to ko