Rewrite/refactor frontend using Angular.js

See also #19