Add py-redis as a requirement
Add settings for adjacency calculator to xsd file
Add settings for KeyValuStore to xsd file

A KeyValuestore (Redis) is required to run the adjacency calculator.
This commit adds support for adding this configuration to the
config.xml file.
Add instructions for installing redis-server
Add import of adjacency files to setup script

By default this will not run since most instances
will not have adjacency data currently.
Add adjacency calculator tests

These get skipped if the adjacency calculator is not
configured in settings.py
Add commands to write redis config to settings.py in set up
Add adjacency calculator to set of calculators

Adjacency calculator calculates average cost/travel/etc.
between all base geounits for a district and plan. It
assigns a score to a district that is the average adjacency
between all base geounits of a district or a normalized
score for an entire region/plan based on the individual
district scores and the average adjacency between all
base geounits for a region.

To speed up calculations and queries an in-memory key-value
store (Redis) is used to store adjacency data.
Refactor key generation for redis into a utility function
Add example settings required for Adjacency calculator
Add redis utility for generating keys
Merge pull request #442 from notthatbreezy/topic/adjacency-calculator

Topic/adjacency calculator
Deleted if statement that was causing choropleth bugs

Not sure what this if statement was doing here -- however,
it was causing a bug that was preventing demographics
from being re-applied as choropleths so I took it out.

Testing has not revealed any regression as a result.
Replace compactness specific avg calculator with general one

This replaces the calculator specific to compactness features
to a more general one that can be used for any generally
continuous set of features.
Moved this to end of mapinit - only seems to be required for new maps

This event listener/trigger was causing some buggy behavior where on
changes in zoom and thematic map for districts were canceling each
other out and removing choropleths.

This seems to be required only on map initialization, so this just gets
called at the end of the mapinit function, once instead.
Add a function to make choropleths for any 'continuous' calculator

This abstracts away the compactness specific choropleth for compactness
into a more general function that will work on any calculator whose
output is a set of continuous (or close to atleast) scores.
Add logic for modifying map legend for adjacency calculator
Modify WFS method to use cached scores if available
Made adjacency optional (minOccures now zero)
Make adjacency a fully optional calculator

This makes a few changes to allow for true option of using
adjacency.

- a setting is written to settings.py depending on if
adjacency is used
- adjacency calculator is optionally used in computing
district features for choropleth
- dropdown selection for adjacency is optionally displayed