Make emplaceRef parameter optional

After playing around with `emplaceRef`, I've decided that mandatory type specification is not a feature. So this makes it now possible to simply use `emplaceRef(myChunk, data)`, rather than `emplaceRef!(typeof(myChunk))(myChunk, data)`.

The implementation is kind of convoluted, but it was the only way to get it working without ambiguity (I'm open to ideas for improving the design).

This should be the last change before I try to make it a public function. I think it has proved its use.