First stab at creating a screenshot feature.

Currently done:

- Ability to upload a screenshot for a top-level object.
    - Can provide a description, tags, and source info.
- Ability to view thumbnails in the UI for a top-level object.
    - Screenshots that have been assigned to that top-level object *as
      well as* any screenshots with tags that match the bucket list tags
      for that top-level object will be shown.
    - Screenshots are limited via source access.
- Ability to look at full-size images in gallery in the UI for a
  top-level object.
- Ability to add an existing screenshot to another top-level object by
  using its ObjectId
    - Currently there's no way to expose the ObjectId other than opening
      the image in a new tab and sniping it from the URL.

Things not working:

- When uploading a screenshot you get no feedback in the modal.
- When uploading a screenshot the thumbnail gallery is not updated.

Code for both of the above exists but it doesn't seem to be working or
isn't being triggered right.

Things to do:

- Expose the ObjectId of the screenshots for easy copying.
- Create a search feature that will go to its own page with a thumbnail
  gallery view.
- Make the API do things.
- A way to remove a screenshot from a top-level object.
- When adding a screenshot through ObjectId include the source
  information if it is filled out and append that source instead of
  ignoring it.

This does add a new dependency: pillow 2.4.0.
Updating UPDATING, DEPENDENCIES, and stuff.

Removed most of the contents of the 'api.py' file since it was copied
over from somewhere else and I didn't get to it tonight. Added the
dependency information, indexing, and UPDATING information to go along
with it.
Track image MD5 for duplicate images.

Allows us to track the same image being uploaded and not dupe documents
in the DB.
Uploading now works properly.

When you upload a screenshot you'll now get a proper message and the
screenshot will be added to the gallery if it isn't already there.
Removal of screenshots and storing screenshot ids.

You can now remove screenshots from a top-level object. When you mouse
over a thumbnail you'll get two icons:

- trash: remove the icon from the top-level object.
- ring/dot: store the screenshot id to a cookie for use in the upload
  screenshot form. you can store multiple ids. if the icon is a ring it
  means you can store it. if it stays permanently visible and is a dot,
  it means it's in your cookie ready to be used.

There is now a trash icon at the top of the Screenshots section. If it
is black it means there are not stored Screenshot IDs in your cookie. If
it is blue it means there are. If you click it, it will clear out all of
the stored Screenshot IDs in your cookie.
Merge tags on upload, style changes, etc.

When you upload a screenshot, if it existed before and you add tags in
your submission, we will now merge the tags with the existing tag list
so they aren't lost.

The screenshots now have a little box-shadow. If a screenshot was
assigned to the top-level object it will have a black box-shadow (also
helps with differentiating white in the image with the background of the
UI). If a screenshot was discovered through the bucket list tags, it
will show up with a blue box-shadow.

The Screenshots section now collapses properly.
Screenshot API and other fixes.

Added Screenshots to the API.

Had to make some changes to the core API to support images being added
to the zip files that it outputs so you can do ?file=1 on a screenshot
and get the image back.

You can read Screenshots and upload screenshots through the API. There
are two modes, "ids" and "screenshot". The former asumes you are
uploading a comma-separated list of ObjectIds of existing screenshots to
append to a top-level object. The latter assumes you are uploading an
image to the system.

Fixed some bugs with uploading screenshots with no description, no tags,
or no source information.
Help documentation for the screenshot API.
Screenshot listing and searching.

Hooked Screenshots up with a jTable listing page. It shows the
thumbnails in a column so you can easily see which image the row is
talking about. Tags are clickable allowing you to narrow down the
listing by tag. Clicking on the Details button gives you the full blown
image.

Due to leveraging jTable, Screenshots can now be marked as Favorites
(only from a listing page at this time).

You can also use global search against screenshots. It will default to
the description and tags fields of the Screenshot, but can be altered
using search operators like normal.

You can not subscribe to a Screenshot.
Show Screenshot in Favorites dropdown.

Also make Screenshots redirect to the rendering view when using the
"details" view in core.
Finishing up docstrings.
Delete and edit description from jtable.

You can now delete screenshots from the system using jTable as well as
edit the Description inline by clicking on the Description text.
Track analyst who added screenshot to db.
Properly style new screenshot upload thumbnails.
Add screenshot to page if none exist yet.

Had a bug where the first screenshot wasn't being added due to some
missing elements on the page if there weren't already screenshots to
load.
Don't show screenshot removal for discovered screenshots.

If the screenshot was discovered due to a matching bucket tag, then
don't show the trash icon. Since it's not officially associated to the
top-level object, you shouldn't be able to "remove" it. Removing it was
removing the thumbnail but it was just showing up again upon page
refresh.
Give screenshots some space on the left as well.
Merge branch 'master' into screenshots
Merge pull request #97 from crits/screenshots

Screenshots!