introduce sessions

This replaces 'task/action/description' with simply 'action', which has been
set up via a Session for some task.

A Logger can create a new Logger for a specific task, optionally with data, by
calling .Session on it with a task and optional data.

Every log entry generated from this Logger will be annotated with a shared ID,
and will inherit the task and data from it. Chaining is additive; tasks get
more and more scoped, session IDs and tasks grow by chaining, and data is
merged.
Merge pull request #3 from pivotal-golang/sessions

Sessions