Public activity streams

The activity streams are available at:

* /api/activity/:principalId/activity-public
* /api/activity/:principalId/activity-loggedin
FWIW, the design vision that was in mind for public / loggedin streams was a little more "under the hood" than this. Specifically, for a given activity stream type `activity`, it could have `public`, `loggedin` and `private` permutations (e.g., `activity#public`, `activity#loggedin` and `activity` for the private one), without having to register a new activity stream type and put custom logic in the router for each one.

Once you can determine the "maximum visibility" of an activity based on its entities, you can determine which visibility bucket(s) to drop the activity into. If it is public, it would get dropped into all of public, loggedin and private streams. If it is loggedin, it goes into loggedin and private. If it is private, then private only.

Then when requesting the "activity" stream, the activity API would automatically determine which visibility you get based on your relation to the group/user/content, etc... This pattern is very similar to how library's work with their visibility buckets and then determining the library visibility.