build.py now watches source files, rebuilding and reserving them on changes

This uses Tornado for both watching the source files and serving them