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.