Add support for Kibana 4

This changeset updates the version of Kibana from 3.x to 4.x. In
addition to the Kibana update, ElasticSearch is now run as its own
service instead of depending on the embedded ElasticSearch inside of
Logstash.

See for more details: https://github.com/azavea/ansible-kibana/pull/2
Add support for purging ElasticSearch indexes with Curator

This changeset adds support for purging old ElasticSearch/Logstash
indexes with Curator. After installing Curator, a cron job is created
to delete any indexes that are older than 30 days.

Attempts to resolve #81.
Add tests of user profile template
Merge pull request #102 from RickMohr/user-profile-basics

Add tests of user profile template
User profile settings form

* Add User model form
* Add `settings.html` template using the form
* Add `privacy_controls.html` partial (which will also be used in popup from profile page)
* Add views
* Strip whitespace from first/last name in `User.clean`

In a future PR:
* Add Bootstrap so tab panels will work
* Add JS to enable/disable privacy controls and set hidden fields
Merge pull request #104 from RickMohr/user-profile-settings

User profile settings form
Move Django static and media directories outside the project directory
Merge proof of concept gulpfile into app directory
Install npm and npm dependencies on app server

Only installs for development or testing because I assume we'll be
creating the JS/CSS files from Jenkins, not staging
Add first JS file.

 - Adds a template filter for getting the proper static file name.
 - Switches to using a tmp directory for the gulp intermediaryDir
Add a clean task that is run before all other tasks
Copy assets and collect static to appropriate folders after building
Fix live reloading
Add script for running npm commands on the app VM
Prevent port-forwarding from messing up Jenkins jobs

 - Adds environment variable for nginx
 - Just uses auto_correct for live reloading, since it doesn't need to be
   used on staging/production
Collect static on provisioning, and add better Windows support.

 - Windows support requires that the user have SeCreateSymbolicLinkPrivilege
   priveleges or run vagrant as an administrator.
   See http://superuser.com/questions/124679/how-do-i-create-a-link-in-windows-7-home-premium-as-a-regular-user
   and http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows
   for more information
 - Moves static files dir outside of the repository
   Prevents a large number of file permission issues
 - Uses the nyc-trees user for all npm tasks
   Prevents a large number of file permission issues
Merge pull request #103 from maurizi/django-js

Integrate proof of concept gulpfile into Django project
Add slug field to Group and use slug for URLs.

Addresses #77
Show followed groups on user profile
DRY up models by creating a mixin to hold common fields and methods

Also adds a method to the new mixin, `clean_and_save`

After some discussion, I think calling full_clean inside of save is the
wrong way to go about things.

ModelForm validation will call the various clean methods for us already,
so calling full_clean in save will validate twice unnecessarily, leading
to extra DB calls for things like uniqueness validation.

That said, having to remember to call full_clean manually seems brittle,
so having a helper method that wraps the two together may help with this.