Use a singleton empty-lcons instead of nil
Add docs
Walk is tail-recursive
IScheduleSeq -> IStream

- Implement it on a minimal StreamNode type, as it doesn't need the 
  full LCons implementation. 

- Put 'pull' on the protocol, defer most of its implementation to 
  clojure.core.trampoline

-
Add names to anonymous functions

... for easier debugging
Protocol-ize walk*
Add some useful extended goals
Add marginalia lein plugin
Add travis CI config file