BREAKING CHANGE - prevents cloning of data (see #798)

**not ready for merge - failing tests**

This addresses #798 and potential similar edge cases by abandoning the behaviour whereby default component data is cloned to avoid mutation by instances, in favour of using option functions instead.

5 tests have broken as a result - I'm about to jump on a bus so don't have time to fix myself, but if anyone else gets a full bank of green lights then by all means merge into dev