Changes to Spreadsheet::Edit, Spreadsheet::Edit::IO, and/or Spreadsheet::Edit::Log

1000.026 : Require Path::Tiny 0.146; fix Preload glitch with title_rx
1000.025 : Require Data::Dumper::Interp 7.012 to get portability fixes
1000.023 : Yet more debug code to diagnose Windows smoker failures...
1000.022 : Small changes, hunting for Windows smoker failures.
1000.021 : Allow completely-redundant alias definitions; Added btw* test cases.
1000.020 : Fix bug with BOM+empty files.
1000.019 : Fix leading-zero .csv corruption bug which came back in 1000.018
           Fix BOM-related test issues on Windows.
1000.018 : Support reading csv files with a BOM
1000.016 : Avoid warnings about !$foo ne $bar with perl v5.41.5
1000.016 : Allow {data_soruce} as option to read_spreadsheet()
1000.015 : Add sort_indicies() method.   Remove unused t/LpodhTestUtils.pm
           Add btwN, btwbt added to Spreadsheet::Edit::Log
1000.014 : Revised algo used to search for an OO/LL installation
1000.013 : Require Data::Dumper::Interp 7.003 (to fix API change issue)
1000.012 : Put back first/last_data_rx (reverts removal in 1000.009).
           sort_rows() needs them to be useful in multi-section sheets.
1000.011 : Tester fixes for Windows
1000.010 : Misc. fixes; Enhanced btwN with mini-backtrace etc.
1000.009 : Remove first/last_data_rx. Detect title clashes in insert_cols
1000.008 : Fix AUTHOR_TESTING test plan glitch
1000.007 : Elide internal frames in backtraces in apply handlers (exc. w debug)
           Fix bug where $@ and $_ were clobbered by btw() and btwN().
           Spreadsheet::Edit::Log ':btw=PREFIX' now generates both btw & btwN.
1000.006 : Add openlibreoffice_path() and friends to Spreadsheet::Edit::IO
1000.004 : Add Spreadsheet::Edit::Log :btw=PFX and :btwN=PFX import tags
1000.003 : Handle symlink issues on Windows
1000.002 : Data::Dumper::Interp 6.002; test libs; white space fixes.
1000.001 : Bumped the version to be > 999.999 to fix a $VERSION problem
  (see https://www.perlmonks.org/?node_id=11153160)
3.031 : Fix date format auto-detection when importing CSV
3.015->3.030 : Fixed various portability issues, particularly for Windows

3.014 : IO::convert_spreadsheet() reworked:

        Auto-detect CSV import column formats when possible to avoid
        corruption when converted to a spreadsheet.  Mainly this is to
        specify "text" format for things which would be spoiled if read
        as a number e.g. zip codes with leading zeroes.  
        Also detects MM/DD/YY vs DD/MM/YY when the DD happens to be > 12.

        Import formats may be provided explicitly with option
           col_formats => [...] 
        The value is a list of codes for columns: "text", 
        "MM/DD/YY", "DD/MM/YY", or undef/empty for Standard 
        (e.g. generic number), or equivalent OO/LO Format Code numbers 
        See https://wiki.documentfoundation.org/Documentation/DevGuide/Spreadsheet_Documents#Filter_Options_for_the_CSV_Filter

        Now csv->ods->csv round trip is usually completely clean.

3.010 : Clean up auto-detect of encoding and quote & separator characters
        in csv files.   It first tries the obvious: UTF-8, '"' and ",", but
        should now work automatically with \t separators.

        Override with 
          input_encoding => "UTF-8",  # for example
          quote_char     => '"',
          sep_char       => ','
        ----
        Support CSV transcoding e.g.
          convert_spreadsheet( inpath => "file_in_utf16.csv", 
                               cvt_to => "csv",
                               output_encoding => "UTF-8" )

        will auto-detect the input encoding (using BOM if present)
        and transcode to a UTF-8 outpath.
        ---
        Separate and generalize the logging functions into
        Spreadsheet::Edit::Log .
        ---
3.009 : Switch tests from Test::More to Test2::V0