Implement event.value with prototype function

Avoid creating extra function instances by using a shared prototype method. To make this optimisable, I changed sources to contain event objects instead of functions. Hopefully the tests caught all places where those were used.

After:

```
diamond x 161 ops/sec ±3.77% (79 runs sampled)
combo x 204 ops/sec ±3.09% (84 runs sampled)
zip x 3,480 ops/sec ±1.69% (93 runs sampled)
flatMap x 293 ops/sec ±4.16% (78 runs sampled)
Bacon.combineTemplate.sample x 688 ops/sec ±1.00% (94 runs sampled)
Bacon.combineTemplate (deep) x 34.00 ops/sec ±2.54% (61 runs sampled)
Bacon.combineTemplate x 457 ops/sec ±0.92% (94 runs sampled)
EventStream.map x 7,913 ops/sec ±1.65% (95 runs sampled)
EventStream.scan x 6,361 ops/sec ±0.63% (96 runs sampled)
EventStream.toProperty x 6,315 ops/sec ±1.86% (95 runs sampled)
```

Before:

```
diamond x 155 ops/sec ±3.17% (83 runs sampled)
combo x 201 ops/sec ±3.69% (82 runs sampled)
zip x 3,088 ops/sec ±1.21% (94 runs sampled)
flatMap x 246 ops/sec ±4.32% (76 runs sampled)
Bacon.combineTemplate.sample x 577 ops/sec ±0.89% (91 runs sampled)
Bacon.combineTemplate (deep) x 30.83 ops/sec ±1.68% (56 runs sampled)
Bacon.combineTemplate x 415 ops/sec ±1.50% (92 runs sampled)
EventStream.map x 6,737 ops/sec ±0.81% (97 runs sampled)
EventStream.scan x 5,717 ops/sec ±0.87% (88 runs sampled)
EventStream.toProperty x 5,459 ops/sec ±1.65% (95 runs sampled)
```

Benchmarks were run with optimisations from #466.