Break underscore dependency, support changing props

This just makes it work without underscore and manages the listeners when the model prop changes. I also made a few things more consistent. Also I have no idea if this works, no tests! :)