Chainable Manager/QuerySet methods

This aligns the implementation of Oscar specific QuerySet Methods with the implementation in current django core[1].
While this is not DRY, it does deliver on chainability and can be seen as preparation to take advantage of the improvements coming to this part of django in 1.7 [2]

The original motivation for this was that using a custom QuerySet while trying not to copy code from oscar felt too hard.

[1] https://github.com/django/django/blob/1.6.2/django/db/models/manager.py#L123
[2] https://docs.djangoproject.com/en/dev/releases/1.7/#calling-custom-queryset-methods-from-the-manager