compile: Handle pre- and post-release versions properly

Normally, people update debian/changelog when the release is tagged
(e.g., ceph). Here we want to use a '+' to add a post-release suffix,
e.g., 0.69+20130918211959.dev.gce723b5-1. The '+' ensures the version
is _higher_ than the release version, e.g., 0.69.

However, sometimes people update debian/changelog before the release
is tagged (e.g., cloudstack). Here we want to use a '~' to add a
pre-release suffix, e.g., 0.69~20130918211959.dev.gce723b5-1. The '~'
ensures the version is _lower_ than the eventual release version,
e.g., 0.69.

Finally, if the commit we're building has been tagged with a release,
e.g., v0.69, just use that version and don't modify debian/changelog
at all.
prepare: Remove duplicates in list of OS dependencies