Improve AbstractBasket lines cache handling

Currently, merge() only invalidated the line cache of the own instance,
and the public-facing merge_line() did not invalidate the cache at all.

Now, merge_line() invalidates the instances' line cache, and merge()
invalidates both instances' line cache.

I discovered this when using merge_line() to split a basket into
subbaskets and .is_empty would not reflect the current state.
Remove unintended side-effect

create_user_address modified the passed dictionary, which is
undocumented, and as far as I'm aware, unintended.
This lead to altering session data.

The problem was spotted because I call place_order multiple times in one
checkout process, and the UserAddress form wouldn't accept the user_id
keyword parameter that it was passed on the second call of place_order.

It is fixed by copying the passed dictionary and only altering the latter.
Templates: Remove stray tag.
Add code field to partner model

This allows partners to be identified without using a name that might
change or be translated.

Unfortunately, this involves a few tricky migrations to move data around
in the correct order.

Fixes #434 but reverts work done for #354
Merge pull request #529 from maikhoepfel/fix/straytag

Templates: Remove stray tag.
Merge pull request #528 from maikhoepfel/fix/shippingsideeffect

Remove unintended side-effect
Merge pull request #526 from maikhoepfel/fix/ordercache

Improve AbstractBasket lines cache handling