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.
I am not sure if the lock is even acquired at this point. It would possibly be dangerous to release it since it removes the lock (even if held by someone else). So I will not do it here.