Item copy

This implements an item copy rest call via /item/{} POST.  It adds test coverage for the new functions.  As part of this, I've added a method to the files model to copy a file.  For all of our current three asset stores, I've added code to allow multiple files to use the same data through the use of a repeated reference.
A good example is [in our oauth plugin](https://github.com/girder/girder/blob/master/plugins/oauth/plugin_tests/oauth_test.py#L155). Note that within the context manager block you'll also want to block (with some timeout) and wait for something to be set from your mocked handler of the expected s3 request.