Centralize get_change() in the SVN backends.

This provides a single implementation of get_change(). It makes use of
the new get_log(), and also a new diff() function in the backends. This
helps keep the code maintainable and bug-free.

I've removed the commit cache stuff that was part of get_change(), since
we never actually ever saved anything in the cache. It's probably
unlikely we'll need to fetch the same commit info very often, so instead
of fixing the caching, I've just opted to save some memory and accesses
and remove it.

There's a couple fixes in here I ran into for revision normalization as
well, and the removal of definitions and properties that are no longer
needed.

Reviewed at https://reviews.reviewboard.org/r/5982/