(re-?)enable the --dry-run option
Add an analysis CMake target; just does a dry run for now
Store the AST for analysis purposes
Add a (not-yet-functional) --coverage option
In Rules, store AST node pointers rather than lines
Add missing #includes
Add to_string() utility function
Report line numbers in author errors
Slightly improve error message
Eliminate needless std::string -> char const* -> std::string dance

std::runtime_error takes a std::string parameter
Move rules_file name to options so we can use it in error messages
Improved  duplicate rule diagnostic with file/line numbers
Major refactoring: reference the data in the AST rather than
replicating it in the expanded rule set

This should cut down on memory usage quite a bit, but admittedly we
introduced some new cycle waste as strings that were formerly stored
are assembled dynamically (see the Rule::svn_path()) for logging
purposes.  This overhead could be mitigated by putting the appropriate
"if" statemens around all logging code.