Read in viewing angles + separate file readers for each instrument

Add ability to read in viewing angles, save them to a separate
geotiff, and save the mean value in the database.

As different instruments use different dataset names for the
viewing angles. it was awkward to use the existing file readers.
So, instead of calling a reader for the file type, we call new
readers for individual instruments (which then call the old methods)

Also, as AATSR has separate data arrays for forward and nadir
directions, add some changes to deal with this. We save all the
arrays to the same file, but create two database entries - one
for each direction

Do some refactoring: make metadata, inputdir etc class variables
rather than passing them through as parameters all the time. Now
we pass the IngestImages object instance through to the other classes
instead.
Tweaks to Image model fields

Change the filename fields (archive and web locations) in the
Image model from CharField to TextField, to allow unlimited
length strings, since filenames could easily get longer than
255 characters (which is the max length guaranteed to work).

Change "direction" to a CharField, as it doesn't need to be long
and add blank=True.
Only hard code AATSR directions in one place

The AATSR direction (forward and nadir) names were hard coded in two
different files. Change so they are only defined once then saved to a
variable to be used elsewhere, so it's easier to maintain in case the
names need to change.
Use nanmean for viewing angles

Use numpy.nanmean instead of regular mean when calculating mean
viewing angles to store in database - ignores any nan values that
may crop up after regridding if our source image doesn't totally
cover the region of interest.