File format, loosely:

First section: Comments.  Any characters, except lines can't start
with "[".

Second section: Data.
Repeat pattern 0 or more times: stanza-name stanza-data
May start with comment line.

stanza-name: Tag name in square brackets, no whitespace inside or at
start of line.

stanza-data:
Repeat pattern 0 or more times, separated by newlines:
Any of:
	blank line	(possibly containing whitespace)
	tag = data	(data = nonempty string other than "{",
			 whitespace before and after may or may not be
			 retained; whitespace before tag, before and
			 after "=" is discarded)
	tag = \n? { \n stanza-data \n }
			(newline before "{" optional, whitespace
			 between tokens ignored)
	comment line

Carriage-return or CR-LF pairs may be used for line breaks instead of
newline.

No provision for storing data containing newlines or carriage-returns;
translating them to/from a storable form is up to the application.

Comment line: Starts with ";" or "#" as first non-whitespace
character.

Tag: Sequence of alphanumerics, underscore, dash, period, colon,
slash.
