RADAR-403: Changes for stream resource

1. Moves code into lib folder
2. Adds a list abstraction 
  - every push will stamp the entry with an autoincrementing id
  - options to read the list from the tailend from a given id, based on length, start id and end id
  - Option to trim the list based on a max length
  - publish any pushes to the same pubsub key
3. Adds a lock abstraction
  - supports acquire/release and expiry after some fixed time
4. Adds an id generator abstraction
  - Allocs incrementing ids
  - For the duration of the callback, another id generation is blocked.

/cc @zendesk/zendesk-radar

### Steps to merge
 - [ ] :+1: of the team

### References
 - Jira link: https://zendesk.atlassian.net/browse/RADAR-403

### Risks
 - Very low: None of the code is used, but watch for regression because of path changes.
Describe the magic number 100 here, and the fact that we expect the startOffset to be negative.