Replaced validation mixin with a base model class.

Added a base class since this will make any future changes to the model,
such as enforcing permissions or pre/post save methods easier to
implement.
Merge branch 'validate_base_class' into develop
Fixed problems in testing.

1. Removed the test suite from setup.py - not all tests were being run
   and there appears to be a problem handling schema migrations.

2. Fixed failing test for the load_checklists command.

3. Fixed setup and tear down of photo upload tests to delete all the
   temporary files and directories used.
Replaced validation mixin with a base model class.

Added a base class since this will make any future changes to the model,
such as enforcing permissions or pre/post save methods easier to
implement.
Renamed Protocol to Method.

Change the Protocol model to Method for two reasons. First is allows
ProtocolType to be renamed to Protocol, providing a cleaner naming
scheme overall and secondly Method describes more accurately the
specific counting method used which conforms to a specific protocol.
In other words a Method is an application of a Protocol.
Renamed ProtocolType to Protocol in the model.
Fixes #10. Added Code to model to provide a lookup table for different types.

Rather than provide alias tables for protocol, age, sex, etc., a
single lookup table was added. The table names names to codes which
then can be used to lookup specific types. Names are grouped into
categories which narrow the lookup space and make it easir to
manage the data.
Fixes #4. Added Activity to the model.

Activity is used alongwith Protocol to more accurately describe how
counts were carried out. It is also useful when publishing information,
for example count durations when reporting counts from seawatches.
Updated changelog with model changes.
Fixes #1. Moved time field from Checklist to Method (formerly Protocol).
Fixes #2. Method on Checklist is now optional.

This allows any "null" method that was used on checklists where
no method/protocol was defined to be deleted, making it easier
to identify which lists which used a formal protocol.
Fixes #5. Added Observer to the model for checklist observers.

Added Observer to the model to replace the strings used to record names
for who submitted the checklist and the list of observers that
participated.
Fixes #6. Added Filter to model to delete unwanted checklists before loading.
Fixes #7. Rewrote the management command for loading checklists.

This is a complete rewrite making the code more modular, easier to
maintain and less prone to errors.
Fixes #13. Added an identifier to Detail to allow changes to be tracked.
Fixes 11. Entry species field now refers to a species or subspecies.

The subspecies field in the Entry model was actually redundant because
given a subspecies the parent species can always be obtained by
splitting the scientific name and using only the genus and species
names. This allows the subspecies field to be deleted at a minor cost
when fetching all records for a given species and for the major benefit
of not having two almost identical fields in the model.
Merge branch 'remove_subspecies' into develop
Fixes #8. The ebird_checklists command is superceded by checklisting.

The ebird_checklists command was used to allow the database to be
populated with checklists from eBird. The checklisting project,
https://github.com/StuartMacKay/checklisting, can easily be used
to download the data which then can be loaded with the load_checklists
command.
Fixes 14. Added support for local settings file.
Fixes 15. Split the api into separatte modules.

This will make it easier to browse the api code to see that features
are support; make the documentation more modular and make it easy
to extend the api while keeping the code manageable.