Initial implementation of Time Machine style backup pruning.

Within 24 hours, all backups are kept. Within 1 month, only the most
recent backup for each day is kept. For all previous backups, only the
most recent of each month is kept.

This is not *quite* the same as Time Machine, but this implementation
is a lot easier to do since it is based on string comparisons of the
dates and doesn't require any "hard" date logic.

Also this commit just 'echo's what will be deleted, and does not
actually delete anything yet because I am still testing it.
More robust path handling.
Rebase on master.
Implement fn_find_backups to reduce code duplication.
Implement fn_expire_backups to reduce code duplication.
Rearrange function definitions.
Take the training wheels off ;-)
Drop BACKUP_FOLDER_PATTERN since it's now only used in one place.
Make fn_expire_backup more robust.
Simplify fn_is_backup_destination implementation.
Correctly handle most recent backup if it's older than 24hs.

Code was assuming that you'd run backups hourly, eg, so you'd have
many backups within the last 24 hours. Code assumed that by the time
you found a backup more than 24h old, you'd already have a value for
$prev set. In the event that your most recent backup is more than 24
hours old, $prev would not be set and bash would get an error "unary
operator expected" when it tried to compare the day of the newest
backup to the empty $prev value.

I fix this by setting a default value for $prev, one that cannot be
mistaken for an existing backup because it does not represent a valid
date. This ensures that the most recent backup is correctly preserved
regardless of it's age.
Whitespace fix, oops.
Add MacOSX compatibility.
More robust date handling.

Previously the date handling expiry logic had a bug where if you had
backups that were a year apart to the day, it wouldn't notice the
difference in year and only notice that the month was the same, and
expire the older one (eg, if you had a backup on 2012-04-01 and
another on 2013-04-01, it'd delete the one from 2012. This commit
makes it compare the full date string instead of just the month, so
that it more robustly keeps older backups.
More elegant cross-platform date logic.
Create "latest" symlink pointing at the most recent completed backup.
Stop creating "latest" symlink (implemented in a different branch).

This reverts commit 28735b181586606e107a471163e8c6b109016446.
Merge master.
Merge pull request #14 from robru/master

Time Machine style backup pruning.