rv-each not updating

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
<script src="https://rawgit.com/mikeric/rivets/v0.9.4/dist/rivets.bundled.min.js"></script>
<div id="view">
  <ul>
    <li rv-each-user="collections:users">{ user:name } <span rv-if="user:manager">*</span></li>
  </ul>
</div>

<button onclick="changeList();">
  Update List
</button>

JavaScript

function onready(){
	window.collections = new Backbone.Model({
  	users: new UserList([{id: 1, name: "Howard", manager: true}, {id: 2, name: "Fred"}, {id: 3, name: "Robin"}])
  });
  
	rivets.bind(document.getElementById("view"), {collections:collections});
}

function changeList(){
	window.collections.get("users").reset([{id: 4, name: "Gary"}, {id: 5, name: "Benji"}, {id: 6, name: "John"}, {id: 7, name: "Richard"}, {id: 8, name: "Sal"}]);
}

var User = Backbone.Model.extend({
	defaults: {
		  id: null
		, name: null
	}
});

var UserList = Backbone.Collection.extend({
	model: User
});
/* global define: true */
(function (root, factory) {
	'use strict';
	if( typeof exports === 'object' ){
		// CommonJS
		factory(require('rivets'), require('Backbone'));
	} else if (typeof define === 'function' && define.amd) {
		// AMD. Register as an anonymous module.
		define(['rivets', 'Backbone'], factory);
	} else {
		// Browser globals
		factory(root.rivets, root.Backbone);
	}
})
(this, function (rivets, Backbone) {
	'use strict';

	var Model = Backbone.Model,
	    Collection = Backbone.Collection;

	/**
	 * Resolves path chain
	 *
	 * for a, 'b.c.d' returns {model: a.b.c, key:'d'}
	 *
	 * @param {Model}  model
	 * @param {String} keypath
	 *
	 * @returns {{model: Model, key: String}}
	 */
	function getKeyPathRoot(model, keypath) {
		keypath = keypath.split('.');

		while( keypath.length > 1 ){
			model = model.get(keypath.shift());
		}

		return {
			model: model,
			key: keypath.shift()
		};
	}

	/**
	 * @param {Model}  model
	 * @param {String} keypath
	 * @param {*}      [value]
	 *
	 * @returns {*}
	 */
	function prop(model, keypath, value) {
		var root = getKeyPathRoot(model, keypath);
		model = root.model;

		if( !(model instanceof Model) ){
			return model;
		}

		if (arguments.length === 2) {
			return model.get(root.key);
		}

		model.set(root.key, value);
	}

	/**
	 * @param {String} action on or off
	 * @returns {Function}
	 */
	function observerFactory(action)...