Allow non-staff users to be associated with a partner.

Also give associated users access to the partner dashboard by giving them
the partner.dashboard_access permission.
Extend permission handling in partner dashboard

Added a 'user role' choice field. Adds and removes both staff status and
dashboard_access appropriately.
PBD: Enforce one stock record matching users partners
Save applies_to_tax_exclusive_prices flag

OfferWizard forgets to save applies_to_tax_exclusive_prices flag at the
end.
Pass user into StockRecordForm

This would be necessary if one wishes to limit the partner selection
available in the product dashboard. As that might be a common
requirement, we just pass it along.
Pre-select partner if appropriate

If the user is not a staff user and has only one partner associated, we
pre-select that.
Allow shipping_address to be 'None' for an order

I've had an issue with orders that contain only items that don't require
shipping. In this case, the shipping address could be ``None`` which
breaks the ``create_shipping_address`` method.

I've added a test case for it and provided a simple fix. I wasn't quit
sure if the check should be in ``create_shipping_address`` or in
``place_order`` and only call it for an address that is not ``None``.
I've decided to go with the first because it is also simpler to test
this in isolation but am not fussed about moving it up.

Fixes #956
Fixes #910
Ensure checkout is possible when no shipping required

The modifications to ensure that the selected shipping method is still
valid later on were causing an issue for orders that didn't require a
shipping method.

This changes adjusts the default shipping repository to check the basket
to see if it requires shipping.  If not, then it returns a single
instance of ShippingNotRequired as the valid method.

Fixes #999
Merge pull request #970 from mbertheau/fix-partner-migrations

Update migration to include PartnerAddress model.
Always use ugettext_lazy for model definitions

As discovered in #1003, some fields of ModelForms were not translated.
The issue is that we've used ugettext instead of ugettext_lazy. The
former will be translated whenever model definitions are loaded, whereas
the latter will translate at the last possible moment. Only then do we
know of the appropriate language to use. Hence, we must use
ugettext_lazy for all model defintions.
Add offer data migration to ensure no null descriptions

As reported by @riklaunim, the migration that makes offer description
non-NULLable can cause problems if you already have offers with null
descriptions.

Unfortunately, the only way around this is to insert a new datamigration
before the old one, and to renumber all later migrations.  That's what
is done here.

The side-effects for people running against master might be quite
painful as they will need to tinker with their South database tables to
ensure things are consistent.  Probably best to remove all entries from
0020 onwards then fake everything.  Apologies all round - however, this
is the better long-term fix.

Fixes #977
Add unlink_user function

This allows it to be overriden. Also removes the dashboard_access
permission if the user is not linked to any other partners. This is the
inverse behaviour to link_user.
Merge pull request #1001 from tangentlabs/fix/partner_dashboard

Fixes for partners dashboard
Merge branch 'origin/issue/1002/pbd_stockrecords' into machtfit

* branch origin/issue/1002/pbd_stockrecords:
  Pre-select partner if appropriate
  Pass user into StockRecordForm
  PBD: Enforce one stock record matching users partners

Force the partner to be the partner of the user when creating and editing stockrecords