Don't exit early on --dry-run.
Add 'and' to title case exceptions.
Allow setting the no-description comment.
Add 's' and 'de' to title case exceptions.

's' is because "'" is matched by \s so o'brian's was going to O'Brian'S. The
first two of those changes is correct but not the second.

'de' I think I saw in a Argintinean title by should apply for German too.
Change words to lower case when necessary when converting to title case.

This was previously making erroneously caps words like LION'S go to Lion'S,
even though lion's was going to Lion's correctly.

Also we where matching on the exceptions list case sensitively so already
capitalised exceptions weren't getting matched.
Add more contraction endings to title case exceptions.

Just search for a couple of lists with via "english common contractions". Also
'd' works for eg d'Avant. But yeah, french caps look a bet different anyway.
Add hint for handling charset errors.
Allow writing to {filename} to rename/remove file.

Only trivially tested. May be issues with encoding etc. May steal your dog and
kick your wife etc.
Add "edit transform result in editor" option.

The purpose of this is to stop more fiddly commandline option and string
format modifiers creeping in. Instead you can just open it in vim or pipe it
through sed. "It" here being the result of formatting/expanding the source
strings with the tags from the relevant files, then pulling out the match
groups from the regex specified in dest from that.

I would like to be able to put a comment line at the **top** of the file showing
what the original source string was but now that I have gone to all the
trouble to do the pipe stuff I can't be bothered. Of course I could just save
everything to an internal buffer and and write to a file or pipe when the time
comes. That would be useful for catching errors from later on in batch lots
before you had made any changes too.

The command line handling is a bit iffy because I wanted to be able to be able
to provid just `-e` on its own to use the default editor or `-e "-sed s/..." or
whatever to use an alternate one. argparse is pretty annoying here though, I
fear that it tries to be compatible with getopt and to handle it how I realy
want I would have to pretty mush parse argv myself. The problem is that if,
say, `-e` is the only option then it ends up catching the first positional
argument (unless you use `--` of course). We can use some heuristics to see if
this is actually an executable but pretty much all of them can fail when
trying to be portable or flexible (extensions, excecutable bit, abspath,
PATH). If it gets too annoying I will change it so it only uses EDITOR.

Just using shlex.split() for the actual 'editor' command for now so you have
to escape spaces and whatnot if you are using sed.
Unicode regexs, yay!
Don't exit loop early when dry run renaming.