common: replace the standard fucked-up definition of os.path.join() by a sane version

Why the merry fuck os.path.join? "If any component is an absolute path,
all previous path components will be discarded."

"I don't know, why don't you try rmtree(os.path.join('blah', 'doh', '/home/user')). Oups."

You're fucking banned.
bakcontent: fix a couple of silent (but bad) bugs and strengthen the tests

The walk path was bogus and only worked when the store is in the tree.

With a detached store, and an absolute path, forcemakedirs() was broken.

And the tests were a little too trusting...