add agent to changelogs and git commits

For archival purposes we need to track what happened, who did it,
and what software they used to do it.  This change adds an optional
"@agent" line to changelogs and git commit messages.

- dvcs.compose_commit_message that accepts agent string and formats
  appropriately.  Eventually this could be used to nicely format
  longer commit msgs (i.e. wrapping).
- Added agent arg to archivally significant DDR.commands.
- Mod the commands to use compose function.
- Mod ddr command to use @agent ddr-cmdln.

issue #112
add agent to entity changelog in entity_create
first pass at pre-publish filter command

This command will be used to filter non-public files from the
history of a DDR collection.
When finished this command will:
- clone a copy of a collection,
- remove all git and git-annex remotes,
- read all the JSON metadata files,
- for each one marked non-public, add to exclusion list,
- run git filter-branch using the exclusion list
- clean up

issue #38
mostly working pre-publish filter command

Still needs a bit of UI refinement: it would be nicer if it
actually executed the git filter-branch command instead of just
printing it out for the user to copy-and-paste.
But it seems to work.

issue #38
annex-get files to PUBLIC repo; filter-branch cmds > sh script

- Instead of forcing user to copy-and-paste from terminal, write
  the filter-branch commands
- Keep working data files out in destdir instead of hiding them
  in the TEMP repo.
- Final PUBLIC repo git-annex gets binaries from TEMP repo.
clearer handling of public repo path; temp repo delete now optional

- Generate final public repo path in main() and pass to mk_filterbranch_script() as an arg.
- Make deletion of temporary repo optional via an arg.
- Comments clarification.
functions for running filter-branch in subprocess (disabled)

I'd like to run filter-branch in a subprocess so the user doesn't
have to run a second shell script, but couldn't get it to work.
Functions are included here for reference.
clearer semantics for mk_filterbranch(); exit if filter fails

- Removed filterbranch_ok arg, it's not used outside this function.
- Changed "rm temp repo" to "keep temp repo".
- Added command-line arg for keeping temp repo.
- Better output messaging.
print output to logfile in addition to console
filter/public path varnames more obvious; subfunc args more generic

Made variable names for FILTER_ and PUBLIC_ repos in the main()
more obvious so it's really clear that those directories are not
the original repo directory.
Made sub-function args more generic (e.g. dest_path > path)
to make those functions simpler.
filter by production status in addition to privacy level
sort json_files before returning list
cancel filter before annex-get if collection is unpublishable

Don't waste time annex-getting a ton of files if the whole thing
is unpublishable.
- Fixed nonpublic_collection function.
- Fixed make_exclusion_list to add alert string if entire
  collection unpublishable.
- Moved exclusion list generation block before annex-get block.
remove work files after finishing the filter operation
make exclusion list before doing anything else

If the collection as a whole is not publishable then  cloning and
annex-getting the files is a waste of time..
added user-friendly documentation to ddrfilter command help
cleaned up code and comments
rm remotes from final public repo

The final public repo contained a remote pointing to the
temporary filter repository.  This is kind-of pointless once the
temp repo is deleted.
elasticsearch indexing and querying code from ddr-local
elasticsearch GET and current query code from ddr-public