Revamp frontend code

* Drop jQuery and underscore
* Use exoskeleton as drop-in replacement for backbone
* Partial use lodash for underscore
* Use own XMLHttpRequest sync handler
* Use far more promises