accepting a custom isEqual function

This is to address #15.

This seems by far the easiest way to implement the feature, but introduces a slight inconsistency. Apparently the `Model` constructor is specified to treat an `undefined` initial value as any other value. Strictly enforcing this policy would make it impossible to specify a second argument without specifying an initial value. So this code enforces that policy *only if no second argument is given*.

Let me know what you think.