load entire sensor cache on first request, clear state on backend restart
basic client functionality for editing sensors
move socket.io wrapper to own module
put edit controls into a container and properly focus on updates