reduce allocations via temporary var

Hi Dominic!

You can significantly reduce the load on the garbage collector by reducing the number of allocations made by new vectors; particularly in tight loops such as this.

Here it was just a simple case of utilising a temporary vector for `diff`.

I added vec2 as a dep too ;)

Here's the GC profile...

##### new

![new](https://f.cloud.github.com/assets/13998/1200181/985fd63e-2520-11e3-9564-2b1032e21a96.png)

##### temp

![temp](https://f.cloud.github.com/assets/13998/1200179/8fbf5554-2520-11e3-970f-93034d42d912.png)