Add block support to pipe()

The pipe method now accepts a block, to which it passes 2 arguments:
  * The line of text being logged
  * The log level of the line

As discussed in #fpm on Freenode, this provides a more flexible, less clunky solution to the use case for #15.

Tests for piping are also present.