Refactor tests to use WebTestCase not ClientTestsCase as per issue #826

My attempt at refactoring the tests to use WebTestCase (and therefore WebTest) instead of ClientTestCase.
* Had to move across the login method and several of the custom assertions from ClientTestCase
* Removed any use of create_user method of ClientTestCase and instead had code use WebTestCase.setUp to create its users. 
* Extrapolated classes with test methods using a mix of staff and non-staff users into their own classes with a common base class. This is in order to allow for setting the is_staff bool on the class instead of explicitly creating a new staff user inside the test method. 

Not sure about my class names. A personal favourite:
tests/functional/dashboard/order_tests.py:64

    class PermissionBasedDashboardOrderTestsNoStaff(PermissionBasedDashboardOrderTestsBase):

I expect Tangent have your own naming conventions and would have a better idea of what's wanted if you were to change that.