Adding Base provider class
Remedial commit for PR #4

If we're going to have a base provider that doesn't have default
implementations for each of its methods then we're better off using the
Abstract Base Class stuff that Python has.

Plus I removed the "Error: Invalid form" message since we should be
returning False when the login form isn't valid and we set the status
message there and then.
Merge pull request #4 from daviddyball/feature/base_providers

Adding Base provider class