2986: Cleaned up arv cli help to be more helpful and consistent.  refs #1667.
2986: Make arv-run-pipeline-instance be nicer to the user when run without
command line parameters.
2986: Implemented "arv edit" command.  Refactored 'arv' to be easier to follow.
Changed control flow of command line processing so that trollop gets a chance
to see command line before subcommands.  Improved help text for subcommands.
2986: Can now specify which fields you want to edit, because fields like 'uuid'
and 'modified_at' are not updatable.
2986: Writes tempfile with appropriate extension so editor can apply proper editing mode.
2986: Report parsing errors and print out contents instead of just blowing up.
2986: Restored "arv pipeline run" subcommand.  Arv edit will now ask you if you
want to retry if there is parse error.  Fixed capitalization of Arvados.
2873: permission links are owned by root

Permission links are themselves "owned" by root. (Technically, the
owner_uuid on permission links will be ignored when determining a user's
permission to modify an object -- ensuring that it is always root
provides consistency, and helps to flush out any permission edge cases
early in testing.)

ArvadosModel.ensure_owner_uuid_is_permitted and
Link.permission_to_attach_to_objects grant permission to modify
permission links based on the user's relationship to the link's head.

New methods:
* User.owns? determines ownership of an object.
* User.can_manage? determines whether a user has permission to manage an object.
* ArvadosModel.has_permission? determines whether an object has been
  granted a particular permission on a specified target.

Refs #2873.
2986: Handles collection ids in 'arv edit' (tells the user collections are not
editable.)  Added error message when subcommand or resource is
unrecognized. Removed old reference to removed command line parameter
global_opts[:resources].
Merge branch '2986-arv-edit' closes #2986
Handle UrlGenerationError as an application exception rather than a
404, even though it subclasses RoutingError. refs #3047
Fix crash on unexpected case of a collection whose owner_uuid is not root.
closes #3047
Remove spurious puts. refs #2884
Suppress "Resource or subcommand '' is not recognized." message when running
arv with no parameters.  refs #2986
Fix symlinks in sdk/cli/bin for arv-mount and arv-keepdocker.  no issue #
2891: Workbench integration tests cope when screenshots aren't supported.
2891: Workbench handles expired tokens more consistently.

Previously Workbench would behave differently depending on whether an
expired token was provided as a query parameter, or living in a
session.  This makes it do the same thing in all cases.  It also fixes
some small bugs around removing api_token from URL paths.
2891: Workbench error page shows login status.

The tests here check that an error page shows the usual user
information for someone logged in, and renders okay for someone who
isn't.
2891: Refactor Workbench API token filters.

Remove dead code and simplify the implementation, especially the
relationship between the "required" and "optional" filters, per
discussion with Peter.
2891: Rename and comment Workbench API token filters.