fix: prefix cl-lib functions with cl and wrap long lines
refactor: snippet--object struct included in fields and mirrors
fix: better take a list rather than &rest args in make-snippet
refactor: snippet--[open|close]-markers take objects not markers
refactor: store `prev' and `next' in all objects, not `prev-field' and `next-field'
fix: properly handle snippet and mirror markers with `snippet--open-object'

* also snippet--close-object is apparently not needed

* don't call the mirror transforms when field-text is null, just
  return empty string. also zero-length fields considered to have a
  null field-text, not the empty string.

* correctly place markers when inserting objects
fixup: guess I need to close snippet-objects after all
add: broader tests, already catch many expansion errors
add: clear unmodified fields when inserting text at the beginning
fix: make-snippet can be a function
fix: no need for eval here, since make-snippet is a function
add: some contrived tests for marker handling in adjancent fields
add: tests for clearing unmodified fields
add: nested fields and nested field skipping