feature/share-collection

This PR adds the ability to share a private collection with anyone who has the "secret" share URL.

Example of a share URL:

```
http://localhost:8000/collection/share/RjU3ISExISEyMDE0LTA4LTAxISFMMk85
```

Assuming the user is logged in already, when the user access the share URL, they will be subscribed to that collection as a student. If the share URL has expired, they will see an error message to that effect.

The application does not associate any state with the share URLs. They are generated and decoded on the fly. Furthermore, the share URLs are merely obfuscated with base64 encoding, not cryptographically secured. We may want to consider enhancing this feature in the future. Since a user can only access a collection as a student through this sharing mechanism, there's little risk that they can do any damage. 

@jazahn Can you review this?

--
Note: original functionality implemented by Bao, who had to leave for the rest of the summer before completing this story.

[FLASH-131](https://jira.huit.harvard.edu/browse/FLASH-131)
Actually, we'll need to add documentation to all files.