lens and tests

feedback please
i'm not totally sure about it, but it looks pretty `map`ish to me. e.g. in the tests:

```javascript
function plus10(x) { return x + 10; }
assert.deepEqual(headOf.map(plus10, [-9, 2, 3]), [1, 2, 3]);
```

so it maps from the first array to the second, but since it's a lens, it only affects the property defined by the getter.