switch from DDR.elasticsearch to DDR.docstore
templatetags for displaying objects in list views
add django-bootstrap-paginator to search results view
made install.sh more like ddr-public's

- Var for package server (tank)
- Vars for bootstrap,jquery,etc versions
- More recent Bootstrap, jQuery
- Move Elasticsearch setup/restart earlier so it can restart
  and warm up by the time the script is done.
- Show status of servers at the end.
- Cosmetic code changes.
partially restored design of paginator

For some reason the django-bootstrap-paginator CSS was not being
recognized.  This at least makes the paginator usable.
search code from ddr-public

This should work a lot better with the new ddr-cmdln docstor
code than the old ddr-local search app, which needs to be
decommissioned.
absorb search app into webui
fixed search form
override DDR.docstore.massage_query_results to add ddr-local URLs
update reindex backround task to current indexing workflow

- Error if MEDIA_BASE doesn't exist.
- Delete and recreate index.
- Add mappings and facets.
update docstore status reporting to work with Elasticsearch 1.0

Elasticsearch changed its status format. This commit adapts to
that and adds a couple new features.
- Alert if no connection to Elasticsearch server.
- Alert if no indices present.
- List size,num_docs for each index.
don't attempt to add URLs to search results placeholder objects

Recap: Django paginator needs to have the entire result set.
We don't want to actually keep the entire set so we keep the
current page and pad the results with placeholder objects.
only search on document models; exclude purely metadata types

Specify collection,entity,file ES types so facets don't appear in
search results.
separate Elasticsearch indexes for each mount path

Creating or refreshing an Elasticsearch index can take
a long time.  Rather than having a single "documents" index
that is recreated every time the mount path is changed,
there is now a separate index for each store.  These indexes
remain in Elasticsearch and are automatically used when the
corresponding store is mounted.  The search admin now shows
stats for each index and controls for dropping and/or
creating/refreshing indexes.  Searching is disabled if no
store is mounted or there is no index.

- Removed reindex celery calls from storage mount/unmount.
- Added webui.set_docstore_index() function that looks for
  mounted storage and a matching ES index, if any.
- @search_index decorator for search-related pages that alerts
  if no mounted storage, or if no ES index for mounted storage.
- Only perform searches if there's an active docstore index
  (see set_docstore_index()).
- Updated search-admin reindex and dropindex forms.  Menus now
  list existing indexes plus index names for mounted stores even
  if the indexes don't exist (so they can be added).
- Reworked search admin page.
- Reworked webui.tasks.reindex() to do the whole reindex workflow:
  delete_index, create_index, put_mappings, put_facets, index.
- Show name of current docstore_index in footer of search pages.

closes issue #152
refactor new-collection/entity-id code to return better errors

- Code for getting CSRF token consolidated into single function.
- Throw exceptions instead of failing silently.
- collections/entity.new view code prints errors to alert boxes.
docstore.post can figure out object type so no need to pass in
better handling of lazy loading of collection status on list page

- Statuses are added to collection objects in the view if they
  can be retrieved from cache.
- Statuses not already cached are loaded by jQuery function after
  page load.
- jQuery function is less stupid than before.
use sRGB colorspace for thumbnails

This should fix the problem of thumbnails looking much darker
than the originals.
Fixes #80
write file role to entity and file JSON files

Previously file role only came from that part of the filename.
This created problems with files with mis-capitalized filenames.
With this change, when the File object is created the role is
read from the filename; later when data is loaded from JSON
the role in the data overrides the role from the filename.
Role is written to File and Entity JSON when either is saved.
added a bunch of documentation to DDRLocalCollection