Initial culture-rewrite commit
Incremental culture-splitter commit 2014.03.03
Seemingly working (OK w/ William the Conqueror + lots) input side

I might fork to a similar but tighter C++ implementation at this point
and come running back here if that proves even more of a headache.

Python's dynamic binding (and typing) leave a lot to be desired as to
known vs. unknown points of failure, and history data corruption /
loss upon rewrite/transformation due to some corner case in the code
that was never exercised or tested explicitly. Such a problem would be
totally unacceptable and would be far too easy to skate-by
unnoticed. I can't test every existing or future valid character
history language element's translation into the parser without
manually inspecting and verifying every single character's parse; I
have to rely upon invariants. Python doesn't feel right for this.

Unfortunately, the C++ version is going to look similar (just
seemingly more complicated to those unfamiliar w/ C or C++) in
implementation, as I don't foresee that using normal C++ tools like
quex/flex and, say, even a hand-coded predictive LL(1) parser is
necessary or desired for the pure simplicity of this "language."

Will he fork it or won't he?  We'll have to see.
Resumed work on Python version; full history parse/rewrite almost done

Much easier when you can lower your expectations. Currently, there's
an issue with the character history rewrite logic that unpleasantly
inserts potential extra newlines into history effect lines containing
but not ending in a brace (trivial fix).

Further, the full parse/rewrite hasn't been vetted over all of the
SWMH history files yet-- just been working with one that stresses
extended effects and formatting to work upon getting the file rewrite
(post-transformation due to culture melting pot rules) to properly
represent the parsed history input data with a minimal text diff.

It doesn't yet import the mock-up format CSV spreadsheet file Aasmul
sent me. Since I'm very near completion of the rest and have dropped
all my old plans for a GUI wizard and the like, I will need to get
a working draft of that input file format in action soon to implement
the actual culture split dynamic logic (relatively trivial), test out
a full German split, and then take some time to look over the diffs to
ensure no stone has been left unturned in terms of possible error or
cosmetically unpleasant cases in the transformation process.
Merge branch 'hist-cpp' into culture-splitter
Fixed multi-brace rewrite rule, exclude dynasty from rewrite if lowborn
Explicitly parse names so that they may be placed at top

+ Quote culture identifiers, for consistency.

Successfully vetted with a full parse -> rewrite of SWMH's norman.txt
Dirty-marking mechanism for character objects to minimize text diff
Fix for dirty-marking mechanism not incl. contents of history entries
Enabled full history folder parse; .txt extension filter
Hacked-on support for a [very] rare way to format history entries
Handled preexistence of output history folder with --force semantics
Full character history folder rewrite implemented
More text diff minimization: preserve trailing line whitespace

EOLs are still converted to standard UNIX-style LF (rather than CRLF,
the technical Windows-style but also not the native CKII style).
Final command-line argument input validation checks
Minor fixes for previous input validation commit.
CSV reader wrapper added; CSV spreadsheet dialect auto-detection
Full validation and handling of all special cases for spreadsheet rows
Release Candidate 1: 1.0.0~rc1
Release Candidate 2: 1.0.0~rc2

Lots of verification done; fix of a couple very baffling bugs; stopped
using builtin Python csv reader and use own simplified CSV spreadsheet
parser that's very specific to our rule file's format (and does not cover
cases like semicolons, the delimeters, needing to be escaped, etc.).

Dates compare properly now with overloaded operators for such while
displaying as strings properly at the same time.