Add more utility functions for identifiers
Add a 'slug' to logs, so that names can be non-identifiers

The 'newLog' update method takes care of generating a unique slug.
add build.buildid, sl.buildslaveid, and st.stepid

This required a lot of refactoring of old tests.  It also required
changing the automatic generation of source step names to generate
proper identifiers.
fix validation
set build status to 'finished' when finished
Use the process Log instance, rather than status

* change log.subscribe's signature to pass a callback that's called with
  different args; change LogObserver to correspond
* decode bytestrings to unicode as they are added to logs, using a
  default function
* step.addLog and friends return a process.log.Log instance
Add logEncoding config