Don't notify observer unless value has actually changed.

With this it's possible to set up two way bindings, example - say we want two points that are always 10 units apart.

``` js
var Vec2 = require('../')

Vec2.precision = 3

function bind2(a, x, y) {
  var b = new Vec2(a.x + (x || 0), a.y + (y || 0))
  b.change(function () {
    a.set(b.x - (x || 0), b.y - (y || 0), false)
  })
  a.change(function () {
    b.set(a.x + (x || 0), a.y + (y || 0), false)
  })
  return b
}

var a = new Vec2(0, 1)
var b = bind2(a, 0, 10)

function log(a, name) {
  a.change(function () {
    console.log(name, [a.x,  a.y])
  })
}

log(a, 'A')
log(b, 'B')

//changing a updates b
a.set(10, 7)

//changing b updates a
b.set(3, 15)
```

I'm getting a funny feeling that you are building a CAD system :+1: