Log a warning when wrapping errors with no errno attribute.

Attempt at a simple refactoring to put `log` in scope for our error handlers, to address #363.  @dannycoates r? modulo my TODO item about the best way to inherit from Boom.

The diff has made a bit of a meal of the changes to error.js; the keys points are:

  * export a function with takes `log` as parameter
  * make a "subclass" of Boom rather than modifying its properties directly
  * add a `log.warn` in the appropriate place
  * lots of indentation changes